Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]ścieżka menu
Forum PHP.pl > Forum > Przedszkole
pawel.b
mam tabelę w mysqlu :

Nazwa :menu
pola :
id - id elementu menu
parent_id - id elementu nadrzędnego
name - nazwa elementu

struktura jest taka

element 1
-elemet 1.1
--elemet 1.1.1
--element 1.1.2
-element1.2
element 2

jak jednym zaptanie wyciągnąć pełną ścieżkę danego elementu menu znając id
np: element 1 > element 1.1 > element 1.1.2
phpion
Ja to robię w ten sposób (w przypadku niewielkich menu, a na takich głównie operuję), że wyciągam całe menu z bazy, odpowiednio obrabiam i zapisuję jako tablicę w jakimś obiekcie konfiguracyjnym. Dzięki temu wypisuję menu na podstawie tej tablicy oraz ścieżkę elementów również na podstawie tej tablicy (pętlą). Reasumując: wypisanie menu (drzewa kategorii) + ścieżki kategorii to 1 zapytanie pobierające wszystkie dane z tabeli oraz odpowiedni kod PHP operujący na tej tablicy.
Maciekbjw
Może pomoże Ci to: http://forum.php.pl/index.php?showtopic=11...mp;#entry568835

Pozdrawiam smile.gif
phpion
Maciekbjw:
Idąc tropem twojego rozwiązania generowane są rekurencyjnie zapytania do bazy. Czyli żeby pobrać ścieżkę dla kategorii będącej na piątym poziomie zagnieżdżenia trzeba wykonać 5 zapytań (conajmniej).
phpion
kefirek:
A co przy większych zagłębieniach? smile.gif

//Edit:
A kolega kefirek już po raz któryś łamie regulamin:
Cytat
Użytkownicy mogą edytować własne, wysłane już posty, oraz kasować je o ile nikt na nie jeszcze nie odpisał.
kefirek
Ja bym to zrobił tak powinno działac

  1. <?php
  2. $cat_id = 15;
  3. $wynik = array();
  4. $tablica = array();
  5.  
  6. $wynik = mysql_query("SELECT * FROM menu");
  7.  
  8. while($dane = mysql_fetch_array($wynik)) {
  9. $tablica[] = array("id"=>$dane["id"], "parent_id"=>$dane["parent_id"],"name"=>$dane["name"]);
  10. }
  11.  
  12. foreach($tablica as $nazwa) if ($nazwa["parent_id"] == $cat_id) $wynik[] = $nazwa;
  13.  
  14. foreach($wynik as $element) {
  15. echo $element["name"].'<br>';
  16. }
  17. ?>
pawel.b
dzięki ale ja potrzebuje sqla na dodatek jedno zapytanie - wiem że się tak da
erix
Przecież masz w ten sposób podane... Jedno zapytanie, też baza danych...
pawel.b
tu jest rozwiązanie mojego problemu
http://kapelak.pl/2008/04/04/drzewa-w-mysql/
może komuś się przyda
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.