Autor | Zpráva | ||
---|---|---|---|
John256 Profil * |
#1 · Zasláno: 10. 6. 2012, 00:39:36
Ahoj, potřebuju poradit se stomovým menu. stáhnul jsem si přímo nějakou šablonu na menu a snažím se do ní vypisovat z databáze a bohužel zatím nějak bez úspěchu. Takhle vypadá tabulka v db:
IDproduct|IDparent|Name| - pokud je prvek úplně nahoře, má IDparent = 0 menu musí mít podle šablony takovouhle strukturu: <li>Administrace <ul> <li><a href="">Položka1</a></li> <li><a href="index.php?page=forms/class">Položka2</a> <ul> <li><a href="index.php?page=forms/methods">Položka2.1</a></li> <li><a href="index.php?page=forms/methods">Položka2.2</a></li> </ul> </li> <li><a href="index.php?page=forms/methods">Položka3</a></li> </ul> </li> No a takto vypadá můj kod: <li><a href=""><strong>Menu</strong></a> <ul> <?php generateMenu(0); function generateMenu($idParent) { $tmp = null; $result = mysql_query("select IDproduct, IDparent,Name FROM tbl Where IDparent = $idParent"); while($row = mysql_fetch_array($result)) { echo "<li><a href = index.php?page='product&id=$row[IDproduct]]'>".$row["Name"]."</a><ul>"; $result2 = mysql_query("select IDproduct, IDparent,Name FROM tbl Where IDparent = $row[IDproduct]"); while($row2 = mysql_fetch_array($result2)){ echo "<li><a href='index.php?page=product&id=$row2[IDproduct]'>".$row2["Name"]."</a>"; $result3 = mysql_query("select IDproduct, IDparent,Name FROM tbl Where IDparent = $row2[IDproduct]"); while($row3 = mysql_fetch_array($result3)) { $tmp = 1; echo ($row3[IDparent] != 0 ? "<ul>" : "</li>")."<li><a href='index.php?page=product&id='$row3[IDproduct]]'>".$row3["Name"]."</a>"; } echo ($tmp != 0 ? "</li></ul>" : "")."</li>"; } } } ?> </ul></ul> Děkuji |
||
Alphard Profil |
#2 · Zasláno: 10. 6. 2012, 01:25:59
Obecně se používá rekurze, takže nekupit do sebe cykly manuálně, ale dynamicky rekurzivně.
U nekonečné úrovně bych raději použil traverzování kolem stromu, pak by vás mohlo zajímat http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php. Kompletní kód vám asi nedám, když je to váš úkol. |
||
Časová prodleva: 12 let
|
0