===== rekursives sortieren Version 2 ====== für die Erstellung eines Menüs mit UL LI Um eine Ausgabe eines in einer Datenbank gespeicherten Menüs richtig aufzubereiten mus man rekursiv vorgehen. Beispiel: Datenbank mit folgenden Feldern id- parent_id - text Ausgabe mit
function build_list($arr) {
$html = '';
foreach ($arr as $id => $val) {
$html .= '- ' . htmlspecialchars($val['name']) . ' (' . $id . ')';
if ($val['children']) {
$html .= build_list($val['children']);
}
$html .= '
';
}
$html .= '
';
return $html;
}
// SQL Abfrage erstellen
$query = 'SELECT id, title, parent_id FROM #__quickfaq_categories';
// Datenbank Abfrage
$db =& JFactory::getDBO();
$db->setQuery($query);
$result = $db->loadObjectList();
foreach ($result as $row) {
$sites[$row->id] = array(
'parent_id' => $row->parent_id,
'name' => $row->title,
'children' => array() );
}
foreach ($sites as $site_id => $site) {
$sites[$site['parent_id']]['children'][$site_id] =& $sites[$site_id];
}
$sites = $sites[0]['children'];
echo build_list($sites);