[mysql/php] query samenvoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Martine
  • Registratie: Mei 2002
  • Laatst online: 15-06 11:41
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: 03-06 15:40
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: 13-06 07:26

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
  • Laatst online: 15-06 11:41
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: 03-06 15:40
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!