![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 1 Dołączył: 22.08.2006 Skąd: universe Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Otoz mam tabelke sql: id | parent_id | name Kategoria ktora posiada parent_id = 0 to kategoria glowna. Napisalem dwie funkcje:
wywołanie:
Gdy testowalem to na kilkunastu kategoriach wszystko bylo ok ale gdy docelowo uzylem okolo 10 tys. kategorii pojawil sie problem... Testujac to na localhost po chwili wszystko zaczelo sie wieszac. Prosze Was o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Problem leży zapewne w tym, że dla każdej kategorii sprawdzasz czy posiada podkategorie za pomocą zapytania SQL wykonywanego w pętli. Nie dziw się, że przy tak dużej liczbie pętli skrypt pada. Możesz to zrobić bez problemu na 1 zapytaniu!
Za pomocą tego zapytania budujesz sobie drzewko postaci:
czyli index tablicy $cat to kategoria nadrzędna. Każdy element $cat jest również tablicą zawierającą podkategorie. Wystarczy teraz zwykłą pętlą przelatywać tablicę $cat w poszukiwaniu kategorii i podkategorii. Równocześnie, żeby zaoszczędzić czas, możesz po zbudowaniu odpowedniej gałęzi usuwać z tablicy użyte dane aby przy następnym przebiegu pętli nie sprawdzać tych, które zostały wcześniej użyte. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 16:08 |