Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rekurencja
Forum PHP.pl > Forum > Przedszkole
Gość_phpion
Hej! Mam taki problem. Mam baze o strukturze:
Kod
id, matka, nazwa, stan

gdzie id to id pozycji w menu, matka to id matki w strukturze menu, nazwa to nazwa :), a stan 0 (ukryty) lub 1 (widoczny).
I teraz tak. Wczytuje dane:
Kod
$q = "SELECT id, matka, nazwa FROM menu WHERE stan=1";
$q = mysql_query($q);

while ($r = @mysql_fetch_array($q))
{
    $A_matka[$r[0]] = $r[1];
    $A_nazwa[$r[0]] = $r[2];
}

Wyspisuje sobie menu funkcja:
Kod
function wypisz($id)
{
    global $A_matka;
    global $A_nazwa;
    
    print "<ul>";
    
    for ($i=count($A_matka); $i>=1; $i--)
    {
  if ($A_matka[$i] == $id)
  {
     print "<li>".$A_nazwa[$i]." (id = ".$i.")</li>";
     wypisz($i);
  }
    }
    
    print "</ul>";
}

wywolujac ja wypisz(0) gdyz 0 oznacza ze kategoria jest na samej gorze struktury. W rezultacie otrzymuje menu:
Kod
Mazaki (id = 4)
    Wodoodporne (id = 6)
Klocki (id = 1)
    Jupikajego (id = 8)
    Jupikajej (id = 7)
    Inne klocuszki (id = 3)
  Betonowe (id = 9)
  Drewniane (id = 5)
    Lego (id = 2)

I chce zeby klikajac na np. Klocki pokazywala mi sie lista z wszystkich potomnych kategorii czyli id 8 7 3 9 5 2. Probowalem zmodyfikowac funkcje wypisz() dodajac do niej drugi parametr i likwidujac print ale wtedy mi wczytywalo (czy do tablicy, czy zmiennej - i tak i tak probowalem) tylko kategorie potrzedne o 1 poziom wglab.
Kod
function potomne($id)
{
    global $A_matka;
    
    for ($i=count($A_matka); $i>=1; $i--)
    {
  if ($A_matka[$i] == $id)
  {
     print $i." ";
     potomne($i);
  }
    }
}

Reasumujac: chcialbym zeby lista potomnych id nie zostala wyslana na wyjscie tylko zwrocona najlepiej jako tablica.
I moze przy okazji jedno: moglby ktos tak zmodyfikowac funkcje, zeby lista pozycji na danym poziomie byla posortowana alfabetycznie A-Z?
Z gory serdeczne dzieki i conajmniej 2x pomogl :)
Gość_phpion
A wypierdalajacie!!
Zauwazylem, ze niechetnie odpowiadacie niezarejestrowanym userom. I chuj! Wiec dlaczego sie nie rejestruje? Bo swego czasu zostalem nieslusznie zbanowany (dostalem 1 ostrzezenie i auto bana). Juz kurwa kilka razy prosilem na tym forum o pomoc - za kazdym razem gowno, jebana cisza.
A wypierdalajcie!!
mike
1. Nawet nie odczekałeś 24 godzin. Czasemi trzeba troche pokory żeby dostac odpowiedź.
2. Widząc Twoja kulturę wypowiedzi, nie ma co się dziwić że dostałeś bana.
3. Po takich szczeniackich fochach podejrzewam że w ogóle nie masz po co tu wracać i pytać, bo nie usłyszych odpowiedzi a raczej "wypierdalaj".



Wie że przegiąłem w pkt. 3. ale może obejdzie się baz ostrzeżenia smile.gif
Gość_phpion
odczekalem 20 godzin, nie spierajmy sie o glupie 4 godziny... no ludzie- badzmy powazni!
ps: swoje postulaty z poprzedniego postu nadal podtrzymuje
ikioloak
To teraz myslisz ze ktos ci odpowie? Nie badz smieszny. Tak jak napisales 'badzmy powazni'. Pozwolcie ze zacytuje:
Cytat
"wypierdalaj"
Guest
widze ze musiales edytowac swojego posta zeby przekazac mi swa swiatla mysl
ps: wzajemnie - jak juz zauwazylem duzo wczesniej
Gość_phpion
wypierdalajta jeszcze raz
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.