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 <UL> <LI>

function build_list($arr) {
  $html = '<ul>';
  foreach ($arr as $id => $val) {
    $html .= '<li>' . htmlspecialchars($val['name']) . ' (' . $id . ')';
    if ($val['children']) {
      $html .= build_list($val['children']);
    }
    $html .= '</li>';
  }
  $html .= '</ul>';
  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);