Avatar billede Slettet bruger
06. december 2004 - 17:07 Der er 7 kommentarer og
1 løsning

Hent data fra 2 tabeller

Jeg skal hente data fra disse 2 tabeller:
udvalgcat med felterne catid og catname.
udvalglist med felterne catid og name.
Jeg har brug for at liste data med catname øverst og de name der hører til fra udvalglist lige under, ordnet på en pæn række i alfabetisk orden.
Hvordan er det lige jeg gør det ?
Avatar billede overchord Nybegynder
06. december 2004 - 17:16 #1
du skal oprette en join mellem de to tabeller, f.eks
mysql_query(
"SELECT udvalgcat.catname, udvalglist.name FROM udvalgcat INNER JOIN udvalglist ON udvlagcat.catid = udvlaglist.catid ORDER BY udvalgcat.catname DESC;")
Avatar billede schaefner Juniormester
06. december 2004 - 17:17 #2
Utestet:

<?php
$catname = "";

/*
Tilslut
*/

$result = mysql_query("SELECT udvalgcat.catname, udvalglist.name FROM udvalgcat, udvalglist
WHERE udvalgcat.catname=udvalglist.name ORDER BY udvalgcat.catname ASC, udvalglist.name ASC") or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  if ($data['catname'] != $catname) {
    print $data['catname']."<br /><br />";
  }
  print $data['name']."<br />";
  $catname = $row['catname'];
}
?>
Avatar billede baitianlong Nybegynder
06. december 2004 - 17:25 #3
Bemærk lige i overchord's svar at der står udvlaglist to steder i stedet for udvalglist, og det skal være ASC i stedet for DESC for abcdefg... ;)
Avatar billede overchord Nybegynder
06. december 2004 - 17:25 #4
jeg kan saa se at du kun vil have catname en gang for hver "under-raekke"

Dvs du kunne ogsaa lave nested queries

$result = mysql_query("SELECT * FROM catlist");
$rows = mysql_numrows($result);

$i = 0
while($i < $rows){
$cat = mysql_result($result, $i, "catname");
$catid = mysql_result($result, $i, "catid");

echo "Kategori: $cat";

$udv = mysql_query("SELECT * FROM udvalgliste WHERE catid = $catid");
$udvrows = mysql_numrows($udv);
$a = 0
while ($a < $udvrows) {
$liste = mysql_result($udv, $a, "name");
echo "$liste";
$a++;
}
$i++;
}
Avatar billede schaefner Juniormester
06. december 2004 - 17:33 #5
Min skal vidst egentlig også være:

<?php
$catname = "";

/*
Tilslut
*/

$result = mysql_query("SELECT udvalgcat.catname, udvalglist.name FROM udvalgcat, udvalglist
WHERE udvalgcat.catid=udvalglist.catid ORDER BY udvalgcat.catname ASC, udvalglist.name ASC") or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  if ($data['catname'] != $catname) {
    print $data['catname']."<br /><br />";
  }
  print $data['name']."<br />";
  $catname = $row['catname'];
}
?>
Avatar billede schaefner Juniormester
06. december 2004 - 17:39 #6
<?php
$catname = "";

mysql_connect("***", "***", "***");
mysql_select_db("***");

$result = mysql_query("SELECT udvalgcat.catname, udvalglist.name FROM udvalgcat, udvalglist
WHERE udvalgcat.catid=udvalglist.catid ORDER BY udvalgcat.catname ASC, udvalglist.name ASC") or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  if ($data['catname'] != $catname) {
    print "<h2>".$data['catname']."</h2>";
  }
  print $data['name']."<br />";
  $catname = $data['catname'];
}
?>

Så skulle det gerne ende med en liste ala dette: http://schaefner.dk/test.php
Avatar billede Slettet bruger
06. december 2004 - 18:06 #7
I er bare så hurtige allesammen.
Jeg har testet de forskellige forslag, men schaefners er lige det jeg efterlyser og det funker ! Derfor point til ham.
Læg et svar schaefner !
Jeg har også prøvet overchords med nested queries, men den giver denne fejl "unexpected T_WHILE" og det kan jeg ikke lige greje
Avatar billede schaefner Juniormester
06. december 2004 - 18:26 #8
Et svar fra mig :)

Med venlig hilsen
Jesper Sørensen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester