Altmenülerinin ile Dinamik Menü

2 Cevap php

Ben bu gibi bir şey olduğunu, bir menü var:

<ul id="menu_cat">
    <li><a class="cat1" href="#">category 1</a>
    <ul>
    <li><a class="cat2" href="#">category 2</a>
        <ul>
            <li><a class="cat3" href="#">category 3</a></li>
            <li><a class="cat3" href="#">category 3</a></li>
            <li><a class="cat3" href="#">category 3</a></li>
        </ul>       
    </li>
    <li><a class="cat2" href="#">Category 2</a>
        <ul>
            <li><a class="cat3" href="#">category 3</a></li>
            <li><a class="cat3" href="#">category 3</a></li>
            <li><a class="cat3" href="#">category 3</a></li>
        </ul>
    </li>
    <li><a class="cat2" href="#">Category 2</a>
        <ul>
            <li><a class="cat3" href="#">Category 3</a></li>
            <li><a class="cat3" href="#">category 3</a></li>
            <li><a class="cat3" href="#">category 3</a></li>
        </ul> 
    </li>
    </ul> <!-- End of CAT1-->
    </li> <!-- End of .Krmiva -->
</ul>

Şimdi dinamik yapmak gerekir, bu yüzden "Kategori 1, 2, 3" MySQL veritabanı alınır, ama CAT1 CAT2, CAT3 için 3 tablolar gibi bir şey yapmak daha ve her öğe için başka bir çözüm düşünemiyorum CAT1 yılında, CAT2 gelen ve her CAT2 20 SELECT * FROM sorguları gibi yapmak anlamına gelecektir ki ... CAT3 alt menüler seçmek için alt menüler seçilmesi.

Herhangi bir fikir? Teşekkürler, Mike.

2 Cevap

Yapabileceğiniz en iyi şey, sadece bir alan "Veli" içeren bir Kategori tablosu, sahip olmaktır, o zaman yapmanız gereken tüm ardışık onun üst dayalı her bir kategoriyi seçin edilir.

Yani, ilk bir ebeveyn olarak önceki kategori vardır ilk kategoriyi seçin, herhangi bir veli (veya bir kök ebeveyn 0) olmadan ilk kategoriyi bulmak. Ve böylece size olan kategori hiç çocuk kadar, sonra işlemi tekrarlayarak tablo ile sarfınazar.

Storing Hierarchical Data in a Database: Eimantas 'yorumunda bağlantılı sitesi nokta makaleleri bu çok ayrıntılı bir taslak verir

Evet, Jamie doğru şeyi verdi. Eğer veritabanında bu şekilde ya da başka bir alternatif koruyabilirsiniz. Aynı için özyinelemeli döngü hazırlayabilirsiniz.

onun 2 seviye, bence, eğer iyi çalışır, ancak birden fazla hiyerarşi için size css ayarlamanız gerekir.