Avatar billede sesam Nybegynder
12. oktober 2004 - 11:30 Der er 17 kommentarer og
1 løsning

SQL select sætning

Hvis jeg har to tabeller hhv. tbl_menu og tbl_sub_menu

tbl_menu

menu_id
menu_name

tbl_sub_menu

sub_menu_id
menu_id
sub_menu_name

Hvordan skriver jeg det så ud i browseren på flg. måde.
---------------------------------------------------------------

MENU1
  umenu1
  umenu2
  umenu3

MENU2
  umenu1
  umenu2
  umenu3

osv???
Avatar billede phliplip Nybegynder
12. oktober 2004 - 11:38 #1
<?
$result = mysql_query("SELECT * FROM tbl_menu");
while($rows = mysql_fetch_array($result)) {
  echo($rows[menu_name]."<br>");
  $result2 = mysql_query("SELECT * FROM tbl_sub_menu WHERE menu_id='".$rows[menu_id]."'");
  while($rows2 = mysql_fetch_array($result2)) {
    echo("&nbsp;&nbsp;".$rows2[sub_menu_name]."<br>");
  }
  echo("<br>");
}
?>
Avatar billede anhansen Nybegynder
12. oktober 2004 - 11:38 #2
Jeg tror jeg ville lave en sql sætning der hedder:
SELECT menu_id, menu_name, sub_menu_name FROM tbl_menu
INNER JOIN tbl_sub_menu ON tbl_menu.menu_id = tbl_sub_menu.menu_id
ORDER BY menu_id, sub_menu_id
Og så ville jeg lave en forløkke, hvor du hver gang menu_id ændrer værdi laver du en overskrift plus første submenu - og alle de andre gange laver du bare en submenu.

Er det til at forstå?
Avatar billede sukos Juniormester
12. oktober 2004 - 11:38 #3
En måde

$top = mysql_query("SELECT * FROM `tbl_menu`") or die (mysql_error());
while($t = mysql_fetch_object($top)) {
echo $t->menu_name;

$sub = mysql_query("SELECT `sub_menu_name` FROM `tbl_sub_menu` WHERE `menu_id` = '". $t->menu_id ."'") or die (mysql_error());
while($s = mysql_fetch_object($sub)) {
echo"<br>\n". $s->tbl_sub_menu;
}
mysql_free_result($sub);

}
mysql_free_result($top);
Avatar billede phliplip Nybegynder
12. oktober 2004 - 11:38 #4
Smider lige et svar /-)
Avatar billede sukos Juniormester
12. oktober 2004 - 11:40 #5
Hov,
echo"<br>\n". $s->tbl_sub_menu;

skulle jo være
echo"<br>\n". $s->sub_menu_name;
Avatar billede jakoba Nybegynder
12. oktober 2004 - 13:10 #6
$sql_kommando = "
    SELECT *
    FROM tbl_menu AS a
        JOIN tbl_sub_menu AS b
        ON a.menu_id = b_menu_id
    GROUP BY a.menu_id ASC, b.sub_menu_id ASC
";
$resultset = nysql_query( $sql_kommando ) or die( mysql_error() );

$m_id = -999;
$row = mysql_fetch_array( $resultset );
while ( $row ) {
    if ( $m_id != $row['menu_id'] ) {        // måske hedder den $row['a_menu_id']
        echo "<br>" .$row['menu_name'] ."<br>";
    } else {
        echo "  " .$row['sub_menu_name'] ."<br>";
        $row = mysql_fetch_array( $resultset );
    }
}
Avatar billede jakoba Nybegynder
12. oktober 2004 - 13:12 #7
dummert. det skal være:
$sql_kommando = "
    SELECT *
    FROM tbl_menu AS a
        JOIN tbl_sub_menu AS b
        ON a.menu_id = b_menu_id
    GROUP BY a.menu_id ASC, b.sub_menu_id ASC
";
$resultset = nysql_query( $sql_kommando ) or die( mysql_error() );

$m_id = -999;
$row = mysql_fetch_array( $resultset );
while ( $row ) {
    if ( $m_id != $row['menu_id'] ) {        // måske hedder den $row['a_menu_id']
        echo "<br>" .$row['menu_name'] ."<br>";
        $m_id = $row['menu_id']
    } else {
        echo "  " .$row['sub_menu_name'] ."<br>";
        $row = mysql_fetch_array( $resultset );
    }
}
Avatar billede sesam Nybegynder
12. oktober 2004 - 16:30 #8
jakoba: Jeg får denne fejl når jeg skyder sql sætningen af i phpMyAdmin

#1054 - Unknown column 'b_menu_id' in 'on clause'
Avatar billede sesam Nybegynder
12. oktober 2004 - 16:35 #9
Der havde sneget sig en fejl ind i SQL sætningen...

$sql_kommando = "
    SELECT *
    FROM tbl_menu AS a
        JOIN tbl_sub_menu AS b
        ON a.menu_id = b_menu_id
    GROUP BY a.menu_id ASC, b.sub_menu_id ASC
";

b_menu_id rettes til b.menu_id

smid et svar...

Mage tak for hjælpen... ;0)
Avatar billede phliplip Nybegynder
12. oktober 2004 - 17:21 #10
Afvist svar !? Hvorfor ? Nu ikke fordi jeg er point jæger eller noget... men hvorfor afvise når mit forslag var det første, det simpleste og gjorde 100% det du efterspurgte ?
Avatar billede phliplip Nybegynder
12. oktober 2004 - 17:23 #11
Desuden er jeg den eneste der har husket <? og ?> :-P
Avatar billede sesam Nybegynder
12. oktober 2004 - 17:24 #12
phliplip: korrekt smid et nyt svar så får du point...
Avatar billede sesam Nybegynder
12. oktober 2004 - 17:25 #13
er der lidt tudefjæs over det her?
Avatar billede jakoba Nybegynder
12. oktober 2004 - 17:54 #14
manden har jo ret :-)
Avatar billede sesam Nybegynder
12. oktober 2004 - 18:04 #15
Jeg gir ham jo os ret...
Det var bare en lille side kommentar til "Desuden er jeg den eneste der har husket <? og ?> :-P"

ikke ondt ment...

Prisværdigt at i hjælper...
Avatar billede phliplip Nybegynder
12. oktober 2004 - 18:52 #16
;)
Avatar billede sesam Nybegynder
12. oktober 2004 - 19:33 #17
phliplip: Det var ikke for at genere dig, mange tak for hjælpen...
Avatar billede phliplip Nybegynder
12. oktober 2004 - 19:44 #18
Det er i orden mester !
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