MySQL sortering af menu-udtræk
Hej alle!Jeg har før fået hjælp i denne tråd: http://www.eksperten.dk/spm/910769
Jeg er dog løbet ind i et problem. Menupunkterne bliver ikke sorteret og vist i korrekt rækkefølge i overensstemmelse med tabellen.
Tabellen:
------------------------------------------------------
| id | parent | prio | title | url |
------------------------------------------------------
| 1 | 0 | 1 | Hovedmenu 1 | /hovedmenu-1/ |
| 2 | 0 | 2 | Hovedmenu 2 | /hovedmenu-1/ |
| 3 | 0 | 3 | Hovedmenu 3 | /hovedmenu-2/ |
| 4 | 0 | 4 | Hovedmenu 4 | /hovedmenu-2/ |
| 5 | 0 | 5 | Hovedmenu 5 | /hovedmenu-1/ |
| 6 | 0 | 6 | Hovedmenu 6 | /hovedmenu-2/ |
| 7 | 3 | 1 | Undermenu 1 | /undermenu-2/ |
------------------------------------------------------
Og min kode her:
// Array to hold the menu
$mainmenu = array();
// Get all menu-items from DB
//$sql = "select * from sider order by 'prio' asc";
//$query = mysql_query("select * from sider order by prio asc, parent asc");
$sql = 'select * from sider order by prio asc;';
$query = mysql_query($sql);
// Loop through results, if any
if (mysql_num_rows($query)){
while ($row = mysql_fetch_object($query)){
// If no parent
if ($row->parent == 0){
// Create as parent in the menu array
$mainmenu[$row->id] = array(
'title' => $row->title,
'url' => $row->url,
'prio' => $row->prio
);
}
else{
// Create as child of the parent in the menu array
if (!isset($mainmenu[$row->parent]['submenu'])){
$mainmenu[$row->parent]['submenu'] = array();
}
$mainmenu[$row->parent]['submenu'][$row->id] = array(
'title' => $row->title,
'url' => $row->url,
'prio' => $row->prio
);
}
}
}
// Dump mainmenu
// echo '<pre>'.print_r($mainmenu, true).'</pre>';
// Loop through main menu
foreach ($mainmenu as $menu){
// Show main menu
echo '<li><a href="'.$menu['url'].'">'.$menu['title'].'</a>';
// Check for sub menus
if (isset($menu['submenu']) && count($menu['submenu'])){
// Loop through sub menus
echo '<ul>';
foreach ($menu['submenu'] as $submenu){
// Show sub menu
echo '<li><a href="'.$submenu['url'].'">'.$submenu['title'].'</a></li>';
}
echo '</ul>';
}
echo '</li>';
}
På forhånd tak! :-)
