Das Nested Set Model
Veröffentlicht am
Das ganze zu einer Ungeordneten Liste zusammenbauen
Um ein Menü mit der UL LI Struktur zusammen zu bauen könnt Ihr folgenden Code verwenden.
function getMenu(){include('php/config/connpdo.php');$access = FALSE;if(isset($_SESSION['user'][1])){if(!isset($_GET['logout'])){$user = $_SESSION['user'][2];$sql = "SELECT dbo_lb_usergroup_map.group_id FROM dbo_lb_benutzer INNER JOIN dbo_lb_usergroup_map ON dbo_lb_benutzer.Zaehler = dbo_lb_usergroup_map.benutzer_zaehler WHERE (((dbo_lb_benutzer.Username)='$user'))";$rst = $pdo->query($sql);while($erg=$rst->fetch(PDO::FETCH_ASSOC)){$access .= "OR n.access=".$erg['group_id']." ";}}}$query = "SELECT n.id, n.name, n.url, count(n.id) AS level FROM `dbo_lb_tree` AS n, `dbo_lb_tree` AS p WHERE n.lft BETWEEN p.lft AND p.rgt AND n.status=0 AND (n.access=1 ".$access.") GROUP BY n.lft ORDER BY n.lft ";$einlesen = $pdo->query($query);$menu = array();while($einzeln = $einlesen->fetch(PDO::FETCH_ASSOC)){$menu[] = array($einzeln['id'],$einzeln['name'],$einzeln['level'],$einzeln['url']);}return buildMenu($menu);}function buildMenu($subMenu){$level = -1;$html = "";$z = 0;foreach($subMenu as $row){if($z>-1){if($row[2] < $level){$diff = $level - $row[2];$html .= "</li>";$html .= str_repeat("</ul></li>", $diff);}if($row[2] > $level){ $html .= "<ul>"; }if($row[2] == $level){ $html .= "</li>"; }$strID = str_replace(" ","_",$row[1]);$html .= "<li><a id=\"".$strID."\" href=\"".$row[3]."">".$row[1]."</a>";$level = $row[2];}else{$z=$z+1;}}if($level >= 1) $html .= str_repeat("</li></ul>", $level);return $html;}$menustr = '<div id="navph"><div id="nav">';$menustr .= getMenu();$menustr = substr($menustr, 0, -5);$menustr .= "</ul></div></div><div class=\"clf\"></div>";echo $menustr;