Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Foreach
moczymorda
post
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

  1. [ id ][ id_parent ][ nazwa ]

Listuje sobie to tak:

  1. <?php foreach($this->katalog as $katalog){ ?>
  2.  
  3. <td class="center"><?php echo $this->escape($katalog->id);?></td>
  4. <td class="center"><?php echo $this->escape($katalog->id_parent);?></td>
  5.  
  6. <?php } ?>


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
Go to the top of the page
+Quote Post
everth
post
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.
  1. SELECT id cur_id, (SELECT COUNT(*) FROM tabela WHERE id_parent=cur_id) desc_count FROM tabela

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]!
Go to the top of the page
+Quote Post
moczymorda
post
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?
Go to the top of the page
+Quote Post
everth
post
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]!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:41