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
