![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 9.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
mam mały problem z kategoriami, a w zasadzie z ich wyswietlaniem i nie mogę sobie z nim poradzić. Dziękuję z góry za wszelkie podpowiedzi. Konktety dwie tabele I tabela - kategorie struktura: id; n_id, ile, opis id- automatyczna numeracja; n_id- wartosci uzyskane z id przy czym główna kategoria oznaczona jako 0 (zero) krótko mówiąc matka-dziecko; ile- ile wpisów w kategorii; opis- nazwa kategorii. II tabela - wpisy (zakładam, że dany użytkownik może umieścić zgłoszenie w kilku kategoriach) struktura: id_wpisu, id_pod, id_nad id_wpisu - numer wpisu z tabeli zgloszenia; id_pod - numer kategorii podrzędnej ( ostatni poziom dziecka) id_nad - numer kategorii naddrzędnej (matka) Jak widać daje takie zestawienie nieograniczoną liczbę poziomów menu i ilosci kategorii o ile z wyświetlaniem menu z tabeli kategorie nie mam problemów, to robią sie schody gdy chcę wyśwetlić pełne przyporządkowanie dla poszczególnego wpisu z tabeli WPISY, tzn odczytując 1 rekord z tabeli wpisy chcę wyświetlić poszczególne kategorie czyli jeżeli rekord to piąty poziom menu to chcę wyświetlić 1_kat/2_kat/3_kat/4_kat/5_kat. I z tym sobie nie radze dlatego prosze o pomoc. zastanawiałem sie jeszcze nad opcją ograniczenia ilości poziomów do 5 i wówczas przyjąłem sobie strukture tabeli wpisy: II tabela - wpisy (zakładam, że dany użytkownik może umieścić zgłoszenie w kilku kategoriach) struktura: id_wpisu, 1_kat, 2_kat, 3_kat, 4_kat, 5_kat id_wpisu - numer wpisu z tabeli zgloszenia; 1_kat, 2_kat, 3_kat, 4_kat, 5_kat- numery poszczególnych kategorii Może takie rozwiązanie było by łatwiejsze? Za podpowiedzi z góry dziękuję i pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zastanów się może nad nieco inną reprezentacją drzewa kategorii w bazie.
Na pewno do podanego przez ciebie problemu bardzo łatwo znaleźć rozwiązanie stosując reprezentację LEFT - RIGHT TREE. Krótki opis tej reprezentacji znajdziesz tu : http://artykuly.zyxist.com/czytaj.php/drzewa_w_php_i_mysql Dla twojego problemu znając wartości left i right danego elementu możesz zebrać ścieżkę do niego następującym zapytaniem:
Jeżeli nie chcesz zmieniać reprezentacji to będziesz musiał "przelecieć" drzewko rekurencyjnie. Możesz to zrobić na 2 sposoby: albo zaciągnąć całą tabelkę do PHP i tam zbudować drzewo, albo za każdą iteracją pobierać nadrzędny wiersz. Proponuje tę pierwszą metodę. -------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 16:55 |