![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 30.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja wiem że to będzie bardzo łatwa odpowiedź ale mam problem ze zrozumieniem foreach. W bazie mam kategorie produktów o strukturze
Listuje sobie to tak:
Chciałbym wykorzystując to jedno zapytanie zabronić usuwania kategorii jeśli posiada subkategorię. Wiem że trzeba będzie napisać drugie foreach żeby sprawdzało czy dla danego $katalog->id istnieje subkategoria z $katalog->id_parent. Ten post edytował moczymorda 23.01.2011, 20:00:42 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Są dwa wyjścia. Pierwsze - dodajesz na stałe w bazie pole które trzyma liczbę potomków danego węzła (np. desc_count). Musisz je aktualizować przy każdym usunięciu/dodaniu węzła potomnego. W drugim rozwiązaniu generujesz sobie to pole w czasie zapytania SQL np.
W obu dostajesz w każdym wierszu liczbę potomków (pierwszego poziomu). Jeśli liczba jest większa niż 0 to blokujesz usunięcie. -------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 30.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Drugi sposób nie zamuli jak będzie 1000 kategorii i 100000 podkategorii?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Musiałbyś sprawdzić. Na moim malutkim zbiorze (50 rek) różnice pomiędzy zwykłym selektem a zagnieżdżonym są pomijalne. Przy większych lepiej trzymaj to pole statycznie.
-------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:41 |