Autor Zpráva
John256
Profil *
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&amp;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&amp;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&amp;id='$row3[IDproduct]]'>".$row3["Name"]."</a>";
                            }
                     echo ($tmp != 0 ? "</li></ul>" : "")."</li>";      
                    }
                }
            }
?>
</ul></ul>
Problém je, že to není univerzální, potom co přidám další tak se to celé nějak pokazí a hlavně nejde přidávat do další úrovně, můžu mít jenom tři v sobě a nevím jak to poupravit, programování není moje silná stránka, mám to jako úkol do školy, prosím pomozte mi.
Děkuji
Alphard
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0