Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> rekurencja
-Gość_phpion-
post 5.08.2005, 18:11:42
Post #1





Goście







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 to the top of the page
+Quote Post

Posty w temacie
- Gość_phpion   rekurencja   5.08.2005, 18:11:42
- - Gość_phpion   A wypierdalajacie!! Zauwazylem, ze niechet...   6.08.2005, 14:52:09
- - mike_mech   1. Nawet nie odczekałeś 24 godzin. Czasemi trzeba ...   6.08.2005, 15:32:04
- - Gość_phpion   odczekalem 20 godzin, nie spierajmy sie o glupie 4...   6.08.2005, 18:34:08
- - ikioloak   To teraz myslisz ze ktos ci odpowie? Nie badz smie...   6.08.2005, 18:38:00
- - Guest   widze ze musiales edytowac swojego posta zeby prze...   6.08.2005, 20:46:20
- - Gość_phpion   wypierdalajta jeszcze raz   11.08.2005, 17:14:01


Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 16:27