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
 
Start new topic
Odpowiedzi
mike
post 6.08.2005, 15:32:04
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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 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: 14.08.2025 - 19:56