Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrócenie kodu z kilkoma pętlami
Forum PHP.pl > Forum > Przedszkole
JamalBIG
Witam

Czy istnieje możliwość 'skrócenia' poniższego skryptu? Zależało by mi aby ilość pętli mogła być zależna od zmiennej np. 5 albo 6 pętli...
  1. $lista_kategorii = '(';
  2.  
  3. $result = @mysql_query("SELECT * FROM ".$prefix."_kategorie WHERE lewa_id='".$id."'");
  4. while ($row = @mysql_fetch_array($result)) {
  5. $lista_kategorii .= $row['id'].',';
  6.  
  7. $result2 = @mysql_query("SELECT * FROM ".$prefix."_kategorie WHERE lewa_id='".$row['id']."'");
  8. while ($row2 = @mysql_fetch_array($result2)) {
  9. $lista_kategorii .= $row2['id'].',';
  10.  
  11. $result3 = @mysql_query("SELECT * FROM ".$prefix."_kategorie WHERE lewa_id='".$row2['id']."'");
  12. while ($row3 = @mysql_fetch_array($result3)) {
  13. $lista_kategorii .= $row3['id'].',';
  14.  
  15. $result4 = @mysql_query("SELECT * FROM ".$prefix."_kategorie WHERE lewa_id='".$row3['id']."'");
  16. while ($row4 = @mysql_fetch_array($result4)) {
  17. $lista_kategorii .= $row4['id'].',';
  18. }
  19.  
  20. }
  21.  
  22. }
  23.  
  24. }
  25.  
  26. $lista_kategorii .= ')';


Struktura tabeli do której odnosi się skrypt wygląda następująco:
id | nazwa | lewa_id | poziom | pozycja

Z góry dzięki za pomoc
Pozdrawiam
lukaskolista
zapytanie wsadz do funkcji i wywoluj rekurencyjnie
Fifi209
O boże! Jeżeli chcesz drzewko to nie tak! Poszukaj lepszych materiałów, doczytaj! Nie zabijaj serwera! On jest drogi!
JamalBIG
możecie mi coś 'podsunąć' bo nawet nie wiem czego szukać, a napisałem temat właśnie po to żeby maksymalnie zoptymalizować ten kod i nauczyć się na przyszłość 'jak nie zabijać serwera' smile.gif

znalazłem rozwiązanie ale nie wiem jak wywołać wynik, bo prawidłowy otrzymuje tylko przy użyciu 'echo' w funkcji a przydało by się to umieścić w jakiejś zmiennej...
  1.  
  2. function szkielet_listy_kategorii($id) {
  3.  
  4. global $prefix;
  5.  
  6. $result = @mysql_query("SELECT * FROM ".$prefix."_kategorie WHERE lewa_id='".$id."'");
  7. while ($row = @mysql_fetch_array($result)) {
  8. echo $row['id'].',';
  9. szkielet_listy_kategorii($row['id']);
  10. }
  11.  
  12. }
marianek89
Nie wiem czy o to konkretnie chodzi, ale czy nie lepiej umieścić to w tablicy?

  1. $licznikpoziomow = 0;
  2. $tablica = array();
  3. function szkielet_listy_kategorii($id)
  4. {
  5. global $prefix;
  6. global $licznikpoziomow;
  7. global $tablica;
  8.  
  9. $result = @mysql_query("SELECT * FROM ".$prefix."_kategorie WHERE lewa_id='".$id."'");
  10. while ($row = @mysql_fetch_array($result))
  11. {
  12. $tablica[$licznikpoziomow++] = $row['id'];
  13. szkielet_listy_kategorii($row['id']);
  14. }
  15. }


Teraz tylko odpowiednio przysiąść nad tablicą.
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.