[mysql/php] query samenvoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Martine
  • Registratie: Mei 2002
  • Niet online
Hoe kan ik de onderstaande twee querys in een query uitlezen? Een while in een while vindt ik niet echt netjes, maar hoe moet ik het anders oplossen?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$sql = mysql_query("SELECT id, name FROM menu ORDER BY sort ASC");
while($row = mysql_fetch_assoc($sql)) {
   
    $sql2 = mysql_query("SELECT id, name AS items FROM menu_items WHERE menuid = '".$row['id']."' ORDER BY sort ASC");
    while($row2 = mysql_fetch_assoc($sql2)) {
       
        if ($CheckMenuName != $row['name']) {
            echo "<br>".$row['name']."<br>";
        }
       
        echo "- <a href=\"/".$row2['id']."\">".$row2['items']."</a><br>\n";
       
        $CheckMenuName = $row['name'];
    }
}
?>


Ik heb dit al, maar dan sorteert hij alleen maar op het veld sort van menu. Hij moet óók sorteren op sort van menu_items

code:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
    menu_items.id AS itemid,
    menu_items.name AS menuname,
    menu.id,
    menu.name
FROM
    menu_items
INNER JOIN
    menu
ON
    menu_items.menuid = menu.id
ORDER BY menu.sort


Geeft als resultaat:

Menunaam test1
- menuitem 01
- menuitem 02
- menuitem 03

Menunaam test2
- menuitem 04
- menuitem 05

[ Voor 15% gewijzigd door Martine op 02-12-2006 18:02 ]


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
is dit geen legitieme code functie: (weet het niet zeker en kan het niet testen)

code:
1
ORDER BY menu.sort, menuitems.sort

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 18-09 08:27

Hermanvh

webOS fan, hacker, developer

therat10430 schreef op zaterdag 02 december 2006 @ 18:14:
is dit geen legitieme code functie: (weet het niet zeker en kan het niet testen)

code:
1
ORDER BY menu.sort, menuitems.sort
Zou inderdaad moeten werken :)

webOS all the way!


Acties:
  • 0 Henk 'm!

  • Martine
  • Registratie: Mei 2002
  • Niet online
Bedankt! Het werkt inderdaad prima, ik dacht gewoon veel te moeilijk :X

Resultaat:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
    menu_items.id AS itemid,
    menu_items.name AS itemname,
    menu.id,
    menu.name
FROM
    menu_items
INNER JOIN
    menu
ON
    menu_items.menuid = menu.id
ORDER BY
    menu.sort ASC,
    menu_items.sort ASC


Uitlezen op deze manier geeft de gewenste 'sitemap'.
PHP:
1
2
3
4
5
6
7
8
9
10
    $sql = mysql_query($query);
    while($row = mysql_fetch_assoc($sql)) {
        if ($CheckMenuName != $row['name']) {
            echo "<br><b>".$row['name']."</b><br>";
        }
        
        echo "- ".$row['itemname']."<br>";
        
        $CheckMenuName = $row['name'];
    }


Bedankt voor de snelle antwoorden! _/-\o_

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Lols, :P en dan te bedenken dat ik nognooit iets in php heb gemaakt, het klonk gewoon zo logisch...

:P Mijn MS Acces 2000 SQL skills van jaren terug leven nog! :P

~ Mijn prog blog!