Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Hierarchiczne menu
Forum PHP.pl > Forum > Przedszkole
pomocnik_piekarza
  1. <?php
  2. mysql_connect('localhost','root','') or die(mysql_error());
  3. function showItems($parent = 0) {
  4. $q = "SELECT id, name FROM category WHERE parent = $parent";
  5. $q = mysql_query($q);
  6. if(mysql_num_rows($q)) {
  7. echo "<ul>";
  8. while($r = mysql_fetch_row($q)) {
  9. echo "<li>";
  10. echo "<a href=\"page.php?id=".$r[0]."\">".htmlentities($r[1])."</a>";
  11. showItems($r[0]);
  12. echo "</li>\n";
  13. }
  14. echo "</ul>\n";
  15. }
  16. }
  17. showItems();
  18. ?>


Wynikiem jest:

http://imageshack.us/photo/my-images/808/treeo.jpg/

W tej chwili wyświetla całe drzewo.

Docelowo chciałbym uzyskać taki efekt menu jak na stronie: http://www.dealsdirect.com.au/c/baby-1/ (menu po lewej - jeśli wejdę w jakąś kategorię pojawią się podkategorie)
Jak to rozwiązać? Jest jakiś standardowy sposób?

Tabela w bazie danych standardowo z wykorzystaniem parent_id (id,name, parent_id)
KrzysiekKCN
A gdybyś przekazywał dane getem? W sensie, może ja to topornie zrobiłem ale działało.

W bazie miałem id | link | hierarchia |
I wyświetlałem w pierwszej liście np. hierarchia 1 z linkiem do hierarchia 2
Kod
<a href="index?menu=2">r['hierarchia']</a>

i w phpie przy sprawdzeniu czy jest get wyświetlałem analogicznie niżej hierarchie 2 z linkiem do 3

Mam nawet pierwszą wersje tego, (troszkę toporne, no i w tym przykładzie w phpie narzucałem hierarchie 1 bez bazy)
Kod
<?php

function podswietlul($tekst) {
    if(isset($_GET['do'])) {
        if($_GET['do'] == $tekst) {
            return 'class="current"';
        } else {
            return 'class="select"';
        }
    } else {
        return 'class="select"';
    }
}
function podswietlli($tekst) {
    if(isset($_GET['procedure'])) {
        if($_GET['procedure'] == $tekst) {
            return 'class="sub_show"';
    }
    }
}
function podswietl($tekst) {
    if(isset($_GET['do'])) {
        if($_GET['do'] == $tekst) {
            return 'show';
    }
    }
}
?>
        <ul <?php echo podswietlul("depot"); ?>>
            <li>
                <a href="?do=depot&procedure=depot_info"><b>Stany i Rezerwacje</b><!--[if IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
                <div class="select_sub <?php echo podswietl("depot"); ?>">
                    <ul class="sub">
                        <li <?php echo podswietlli("show_all_product"); ?>><a style="color: #36bec6;" href="?do=depot&procedure=show_all_product">Wyświetl Produkty</a></li>
                        <li <?php echo podswietlli("create_book"); ?>><a style="color: #63c936;" href="?do=depot&procedure=create_book">Stwórz Rezerwacje</a></li>
                        <li <?php echo podswietlli("modify_book"); ?>><a style="color: #f0d34d;" href="?do=depot&procedure=modify_book">Modyfikuj Rezerwacje</a></li>
                        <li <?php echo podswietlli("depot_history"); ?>><a style="color: #36bec6;" href="?do=depot&procedure=depot_history">Historia Zmian</a></li>
                    </ul>
                </div>
        <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
        </ul>
<div class="nav-divider">&nbsp;</div>

        <ul <?php echo podswietlul("depot_changes"); ?>>
            <li>
                <a href="?do=depot_changes&procedure=depot_changes_info"><b>Zmiany Magazynowe</b><!--[if IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
                <div class="select_sub <?php echo podswietl("depot_changes"); ?>">
                    <ul class="sub">
                        <li <?php echo podswietlli("add_product"); ?>><a style="color: #63c936;" href="?do=depot_changes&procedure=add_product">Przyjęcie  Magazynowe</a></li>
                        <li <?php echo podswietlli("modify_product"); ?>><a style="color: #f0d34d;" href="?do=depot_changes&procedure=modify_product">Modyfikuj Produkt</a></li>
                        <li <?php echo podswietlli("withdraw_product"); ?>><a style="color: #da4848;" href="?do=depot_changes&procedure=withdraw_product">Wycofaj Produkt</a></li>
                        <li <?php echo podswietlli("modify_sector"); ?>><a style="color: #f0d34d;" href="?do=depot_changes&procedure=modify_sector">Modyfikacja Sektorów</a></li>            
                        <li <?php echo podswietlli("depot_changes_history"); ?>><a style="color: #36bec6;" href="?do=depot_changes&procedure=depot_changes_history">Historia Zmian</a></li>
                    </ul>
                </div>
        <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
        </ul>
<div class="nav-divider">&nbsp;</div>

        <ul <?php echo podswietlul("build"); ?>>
            <li>
                <a href="?do=build&procedure=build_info"><b>Budowy</b><!--[if IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
                <div class="select_sub <?php echo podswietl("build"); ?>">
                    <ul class="sub">
                        <li <?php echo podswietlli("add_build"); ?>><a style="color: #63c936;" href="?do=build&procedure=add_build">Dodaj Budowę</a></li>
                        <li <?php echo podswietlli("modify_build"); ?>><a style="color: #f0d34d;" href="?do=build&procedure=modify_build">Modyfikuj Budowa</a></li>
                        <li <?php echo podswietlli("deactive_build"); ?>><a style="color: #da4848;" href="?do=build&procedure=deactive_build">Deaktywuj Budowę</a></li>
                        <li <?php echo podswietlli("settlement_build"); ?>><a style="color: #63c936;" href="?do=build&procedure=settlement_build">Rozliczenie Budowy</a></li>                        
                        <li <?php echo podswietlli("client_history"); ?>><a style="color: #36bec6;" href="?do=build&procedure=client_history">Historia Zmian</a></li>
                    </ul>
                </div>
        <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
        </ul>
<div class="nav-divider">&nbsp;</div>


        <ul <?php echo podswietlul("clients"); ?>>
            <li>
                <a href="?do=clients&procedure=client_info"><b>Klienci</b><!--[if IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
                <div class="select_sub <?php echo podswietl("clients"); ?>">
                    <ul class="sub">
                        <li <?php echo podswietlli("add_client"); ?>><a style="color: #63c936;" href="?do=clients&procedure=add_client">Dodaj Klienta</a></li>
                        <li <?php echo podswietlli("modify_client"); ?>><a style="color: #f0d34d;" href="?do=clients&procedure=modify_client">Modyfikuj Klienta</a></li>
                        <li <?php echo podswietlli("deactive_client"); ?>><a style="color: #da4848;" href="?do=clients&procedure=deactive_client">Deaktywuj Klienta</a></li>
                        <li <?php echo podswietlli("show_client"); ?>><a style="color: #36bec6;" href="?do=clients&procedure=show_client">Wyświetl Klientów</a></li>                        
                        <li <?php echo podswietlli("client_history"); ?>><a style="color: #36bec6;" href="?do=clients&procedure=client_history">Historia Zmian</a></li>
                    </ul>
                </div>
        <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
        </ul>
<div class="nav-divider">&nbsp;</div>

        <ul <?php echo podswietlul("history"); ?>>
            <li>
                <a href="?do=history&procedure=client_info"><b>Historia Ruchów</b><!--[if IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
                <div class="select_sub <?php echo podswietl("history"); ?>">
                    <ul class="sub">
                        <li <?php echo podswietlli("show_history"); ?>><a style="color: #63c936;" href="?do=history&procedure=show_history">Wyświetl Całą Historię</a></li>
                        <li <?php echo podswietlli("history_config"); ?>><a style="color: #f0d34d;" href="?do=history&procedure=history_config">Konfiguracja Wyświetlania</a></li>
                    </ul>
                </div>
        <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
        </ul>
<div class="nav-divider">&nbsp;</div>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.