Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z pętlą
Forum PHP.pl > Forum > Przedszkole
Elbow
Witam,

Tworzę menu i mam mały problem.
Pierwszy while wyświetla menu główne, a drugi while menu nadrzędne. Jak zrobić aby wyświetlało również nadrzędne nadrzędnych bez ręcznego pętlowania? smile.gif
Mam nadzieję, że wystarczająco wytłumaczyłem
  1. <?php
  2. $menu = $mysqli->query("SELECT * FROM menu WHERE submenu=0 ") or die('Błąd zapytania');
  3.  
  4. if($menu->num_rows > 0) {
  5.  
  6. while($m = mysqli_fetch_array($menu, MYSQLI_ASSOC)) {
  7. echo '<option value="'.$m['id'].'"><strong>'.$m['nazwa'].'</strong></option>';
  8. $menu2 = $mysqli->query("SELECT * FROM menu WHERE submenu ='".$m['id']."'") or die('Błąd zapytania');
  9. while($m2 = mysqli_fetch_array($menu2, MYSQLI_ASSOC)){
  10. echo '<option value="'.$m2['id'].'">&nbsp;&nbsp;&nbsp;&lfloor; '.$m2['nazwa'].'</option>';
  11.  
  12. }
  13. }
  14. }
  15. ?>
mmmmmmm
Rekurencja.
Elbow
Nie jestem doświadczony, przeczytałem troszkę o tej rekurencji, ale nie wiem jak ją zastosować w odniesieniu do mojego problemu.
Damonsson
Żeby zrozumieć rekurencję, trzeba zrozumieć rekurencję wink.gif
Elbow
Czyli rozumiem, że nie uzyskam konkretniejszej pomocy na tym forum? facepalmxd.gif
nospor
Po pierwsze: zacznij od poprawnej struktury drzewiastej tabeli. Generowanie w petlach zapytan jest totalnie nieoptymalne. A generowanie ich w rekurencji to juz w ogole porazka. Przykladowa struktura drzewiasta: drzewka IP.

ps: jak ci sie nie chce zmieniac struktury, to od biedy moze pozostac ta. Musisz tylko jednym zapytaniem pobrac wszystkie elementy z tabeli, a potem to juz tylko rekurencją latac po otrzymanej tablicy smile.gif Unikniesz zbednego latania po bazie i mulenia.
trueblue
Google: http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.