Witam
Zaczne tak oto kod sql
CREATE TABLE `menu` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`nazwa` varchar(30) NOT NULL,
`potomek` int(8) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=8 ;
--
-- Zrzut danych tabeli `menu`
--
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (1, 'meble', 0);
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (2, 'krzesla', 0);
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (3, 'szafy', 1);
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (4, 'sofy', 1);
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (5, 'fotele', 1);
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (6, 'drewniane', 3);
INSERT INTO `menu` (`id`, `nazwa`, `potomek`) VALUES (7, 'drewnopodobno', 3);
Oraz kod php wyswietlajacy zawartosc menu z moziwoscio klikania i zaglebiania sie w strukture:
meble / szafy / ..
<?php
mysql_select_db('sql',$polaczenie);
//
$tmp=explode(',',$co);
echo $tmp[1].'<br>';
$zap=mysql_query('select * from menu where potomek=0');
while($row=mysql_fetch_assoc($zap)){
echo '<a href="?co='.$row['id'].'">'.$row['nazwa'].'</a><br>';
if ($row['id']==$tmp[0]){
$$tmp[0]=mysql_query('select * from menu where potomek='.$tmp[0]);
while($row=mysql_fetch_assoc($$tmp[0])){
echo '--><a href="?co='.$tmp[0].','.$row['id'].'">'.$row['nazwa'].'</a><br>';
//
if ($row['id']==$tmp[1]){
$$tmp[1]=mysql_query('select * from menu where potomek='.$tmp[1]);
while($row=mysql_fetch_assoc($$tmp[1])){
echo '----><a href="?co='.$tmp[0].','.$tmp[1].','.$row['id'].'">'.$row['nazwa'].'</a><br>';
}
}
//
}
}
}
//
mysql_close($polaczenie);
?>
Jak do tej pory wystarczalo mi zagniezdzanie sie do tej liczby elementow - 3. Robulem to na warunkach if i dziala nie najgorzej.
To rozwiazanie ma nastepujacy problem - ano jak zmeinic warunki if na petle ktora sama bedzie potrafila okreslic jak daleko ma sie zagniezdzac. Czyli czy to 2, 5, 10... poziom podmenu.
A moze inne rozwiazania (IMG:
http://forum.php.pl/style_emoticons/default/questionmark.gif)