Cytat(thek @ 27.08.2009, 10:16:45 )

Przy okazji... Jeśli miałbym się bawić w budowanie wielokrotnie zagnieżdżonych menu to raczej bym tabelę w bazie zmienił. Jedna tabela z polami: id_węzła, nazwa, root (domyślnie 0) i inne jakie Ci potrzebne. Dlaczego?
Bo wszystko co ma root = 0 jest elementem głównego menu, a to co ma tam liczbę jest submenu podpiętym do pola o id równym id_węzła. Można więc zrobić nie wiem jak głębokiee zagnieżdżenia. Co prawda odbywa się to kosztem pisania kodu nieco bardziej skomplikowanego (rekurencja), ale kto powiedział, że życie jest łatwe?

jeśli chodzi o tabelę root, to taką samą funkcję spełnia submenu, domyślnie ma wartość 0, a menu jest tak skonstruowane, że moge zrobić maksymalnie 3 zagnieżdżenia dlatego submenu może mieć tylko wartości 1,2 lub 3. tabela pid to id rodzica submenu.
poprawiłem trochę funkcje bo jak ktoś wcześniej zwrócił uwagę zawierała błąd, próbowałem zrobić tak, że każdy stopień miał swoje zmienne z których na koniec wartości zwracała funkcja, ale mi to nie działało.
Teraz mam coś takiego:
function Menu ()
{
$db['host']="sql.nazwa.pl";
$db['user']="z";
$db['pass']="n";
$db['name']="y";
$db['prefix']="new_";
$page = 1;
$link = mysql_connect("".$db['host']."", "".$db['user']."", "".$db['pass']."") or
die ("Nie można się połączyć");
$query = "SELECT * FROM ".$db['prefix']."menu WHERE submenu='0' AND page='".$page."' ORDER BY position DESC";
$result = mysql_query ($query) or
die ("Zapytanie zakończone niepowodzeniem");
{
return '<ul>';
if ($rek['parent'] == TRUE)
{
$poziom1= '<li><span class="dir">'.$rek['name'].'</span><ul>';
if ($rek['parent'] == TRUE)
{
return '<li><span class="dir">'.$rek['name'].'</span><ul>';
$query = "SELECT * FROM ".$db['prefix']."menu WHERE pid='".$rek['id']."' AND submenu='1' AND page='".$page."' ORDER BY position DESC";
$result = mysql_query ($query) or
die ("Zapytanie zakończone niepowodzeniem"); {
if ($rek['parent'] == TRUE)
{
return '<li><span class="dir">'.$rek['name'].'</span><ul>';
$query = "SELECT * FROM ".$db['prefix']."menu WHERE pid='".$rek['id']."' AND submenu='2' AND page='".$page."' ORDER BY position DESC";
$result = mysql_query ($query) or
die ("Zapytanie zakończone niepowodzeniem"); {
return '<li><a href="'.$rek['link'].'">'.$rek['name'].'</a></li>';
}
return '</ul></li>';
} else {return '<li><a href="'.$rek['link'].'">'.$rek['name'].'</a></li>';}
}
return '</ul></li>';
} else {return '<li><a href="'.$rek['link'].'">'.$rek['name'].'</a></li>';}
$poziom1e= '</ul></li>';
} else
{
$poziom1 '<li><a href="'.$rek['link'].'">'.$rek['name'].'</a></li>';
}
return $poziom1.$poziom1e;
return = '</ul>';
}
}
ale nie wiem dlaczego ale żadne pętle sie nie wykonują, strukturę bazy mam taką:
id pid page link name submenu parent position 1 1 1 # Treść 0 0 1
2 1 1 # Artykuły 1 1 1
3 2 1 # Najnowsze 2 1 1
4 1 1 newsy.php News 0 0 1