![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 2.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam oto taki problem. Jest tabela, któa wygląda następująco: id, nazwa, pod, podnr Rerokrdy w tej tabeli to wpisy menu z dwoma poziomami. Pierwszy poziom wyglada następująco: id 1 nazwa JEDEN pod 0 podnr 1 - taki sam jak id Drugi poziom menu wygląda następująco: id 2 nazwa JEDEN.1 pod 1 podnr 1 Zaciągam więc z tabeli wyniki: Tak wygląda mój kod:
na czym polega problem. Otóż skrypt wykonuje pierwszą pętle while prawidłowo. Pokazuje wszystkie możliwe wyniki z tabeli, za to przy drugiej petli (tej pętli w pętli) pokazuje tylko jeden wynik, po prostu nie zapętla się tyle razy ile jest możliwych wyników w tabeli. Otrzymuje wynik taki: JEDEN jeden.1 DWA dwa.1 TRZY trzy.1 a chciałbym otrzymać: JEDEN jeden.1 jeden.2 jeden.3 DWA dwa.1 dwa.2 dwa.3 TRZY trzy.1 trzy.2 trzy.3 Będę wdzięczny za podpowiedź, co zrobić, żeby pętla druga zapętlała się tyle razy ile jest wyników w danej tabeli. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Sposób w jaki to robisz jest bardzo nie optymalny. Nie nalezy generowac zapytan w petli.
Tutaj opisałem alternatywe. Moze ci sie przyda: http://nospor.pl/grupowanie-wynikow.html -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 2.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Niestety, nie do końca mi to pomogło, chociaż rozwiązanie jest na pewno bardzo optymalne. Otóż, w twoim przykładzie (przykład 1.) wyniki pobierane są z dwóch tabel. Pierwszy poziom menu to wyniki z tabeli kategorie a drugi poziom to produkty (jesli oczywiście dobrze wyczytałem z kodu, który jak dla mnie jest zawiły
![]() Zastanawiam się zatem, czy jest jakakolwiek możliwość, żeby stworzyć owe menu z dwoma poziomami na jednej tabeli, kiedy pierwszy i drugi poziom ma taką samą liczbę w kolumnie podnr a różnią się tym, że pierwszy poziom w kolmnie pod ma 0 a drugi poziom 1. Rozwiązanie pewnie jest i to nie jedno, jednak z moim pojęciem na temat php są one jeszcze niewyobrażalne ![]() ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
rozumiem, że chodzi Ci o wielopoziomowe menu, w takim razie jest to problem drzewka kategorii, jest kilka rozwiązań na to np. drzewko lewo praw lub drzewko IP, ja osobiście polecam drzewko IP, aczkolwiek jeżeli jesteś bardzo początkujący to może Ci się to wydać za bardzo skomplikowane.
Jeżeli masz tylko 2 poziomy czyli tylko kategorie główne i podkategorie, to najprościej byłoby dodanie kolumny podkategorie w tabeli kategorie, i trzymać tam podkategorie w postaci zserializowanej tablicy, aczkolwiek takie rozwiązanie jest bardzo nieelastyczne i uniemożliwia wiele operacji mysql. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Otóż, w twoim przykładzie (przykład 1.) wyniki pobierane są z dwóch tabel. Przeciez to tylko przyklad by pokazac ideę. Przeciez ta druga tabela to nic innego jak Twoja pierwsza z warunkiem na ustawiony poziom
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 2.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Przeciez to tylko przyklad by pokazac ideę. Przeciez ta druga tabela to nic innego jak Twoja pierwsza z warunkiem na ustawiony poziom Pokombinowałem i się udało. Porada nospora bardzo się przydała. Wykombinowałem to następująco:
Tak na prawdę trzeba było tylko zmienić zapytanie i dodać warunek aby w drugim poziomie nie pokazywał rekordów których wartość pola POD wynosi 0. Problem miałem z wyciągnieciem w tablicy menu w poziomie pierwszym. Oczywiście, za dużo grzebałem, bo okazało się, że wystarczyło pozostawić kod bez większych zmian i pozmieniać nazwy zmiennych. Także dziękuję bardzo. Oczywiście, jeśli coś by można było jeszcze poprawić pod względem optymalizacji jestem jak najbardziej otwarty na sugestie ![]() Jeśli chodzi o menu drzewko IP powiem że to bardzo ciekawe rozwiązanie, które będę chciał zastosować prędzej czy później. Na pewno ułatwi mi to zycie ![]() Pozdrawiam i dziękuję za pomoc. Ten post edytował glaacier 26.12.2010, 04:32:07 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 04:41 |