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];
}
$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>";
}
{
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)
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);
}
}
}
{
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 :)