Link Опубликовано 26 Августа 2006 Жалоба Поделиться Опубликовано 26 Августа 2006 Всем привет, такой вопрос.Нужно сделать менюху которая меет вид ссылок и подссылок и еще подссылок к ним.Т.е. трехступенчатая система: 1ссылка>>1подссылка>>>>1подподссылка>>>>2подподссылка>>2подсссылка>>>>1подподссылка>>>>2подподссылка2ссылка>>1подссылка>>>>1подподссылка>>>>2подподссылка>>>>3подподссылка>>2подсссылка3ссылка>>1подссылка>>>>1подподссылка>>2подсссылка И эти сссылки нужно брать из соответственно 3-х таблиц. Как правильно определиться с вложенными циклами и как в них сделать запросы чтобы выбирались внутри циклов лишь те ссылки которые действительно соответствуют категориям? Я тут накидил 2-х ступенчатое меню, оно работает но вывод подссылок не соответствует категориям, скажем Спорт>>КУльтура>>Скейтбординг Хотя скейты должны быть в спорте.Вот код 2-х ступенчатой, непподскажите что переделать чтобы скейтбординг был в спорте. Ну по возможности с трехступенчатой. Код: $query = "select * from menu1";$result=mysql_query($query);$num=mysql_num_rows($result); $query2 = "select * from menu1, menu2 where menu2.id=menu1.id";$result5=mysql_query($query2);$num2=mysql_num_rows($result2);print "<br><br>"; for ($i=0; $i<$num; $i++){$row = mysql_fetch_array($result);print $row['name']."<br>"; for ($j=0; $j<$num2; $j++){$row = mysql_fetch_array($result2);print "------->>";print $row['name2']."<br>";}} Таблицы CREATE TABLE `menu1` ( `id` int(11) NOT NULL auto_increment, `name` varchar(20) default NULL, `nomer` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ; -- -------------------------------------------------------- -- -- Структура таблицы `menu2`-- CREATE TABLE `menu2` ( `id` int(11) default NULL, `id2` int(11) NOT NULL auto_increment, `name2` varchar(20) default NULL, `nomer2` int(11) NOT NULL default '0', PRIMARY KEY (`id2`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ivanoff Опубликовано 26 Августа 2006 Жалоба Поделиться Опубликовано 26 Августа 2006 http://phpclub.ruhttp://php.ru/forum Спроси там А лучше в поиск сходи на ихних форумах. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 26 Августа 2006 Жалоба Поделиться Опубликовано 26 Августа 2006 создавать для каждого уровня менюшки отдельную таблицу неправильно.посмотри как сделано в таблице [prefix]forums и обрати внимание на колонку parent_id. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jim bim Опубликовано 26 Августа 2006 Жалоба Поделиться Опубликовано 26 Августа 2006 Непонял назначение и не понял почему не использовать яваскрипт с ваувэба - точно такой как тебе надо и без гемороя... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 26 Августа 2006 Жалоба Поделиться Опубликовано 26 Августа 2006 у автора проблема не с html-реализацией, я так понял, а со структурой БД и взаимодействием с ней через php. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Link Опубликовано 27 Августа 2006 Автор Жалоба Поделиться Опубликовано 27 Августа 2006 Да именно с реализацией в бд + связка в php, в 2-х словах немогу как сделать менюху что-то похожее вот на такую www.softlinks.ru Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Link Опубликовано 27 Августа 2006 Автор Жалоба Поделиться Опубликовано 27 Августа 2006 Cпасибо! почитал ссылки, нашел почти что искал, только 1 деталь, список дерева выводится полностью. Нужно чтобы при нажатии на главную категорию вылетал список его ее подкаталогов.Т.е. видимо передавать параметр, и так для подкаталогов тоже.Вот код который имеется, нужно только объяснить мне как сделать описанное выше. Потому как вылетает сразу вся менюха а не по категориям как сделано на www.softlinks.ru например. CREATE TABLE `catalogs` ( `cat_id` int(11) NOT NULL auto_increment, `parent_id` int(11) NOT NULL default '0', `cat_name` varchar(200) NOT NULL default '', PRIMARY KEY (`cat_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13; INSERT INTO `catalogs` VALUES (1, 0, 'Программирование'); INSERT INTO `catalogs` VALUES (2, 1, 'Веб программирование'); INSERT INTO `catalogs` VALUES (3, 1, 'Системное программирование'); INSERT INTO `catalogs` VALUES (4, 2, 'PHP'); INSERT INTO `catalogs` VALUES (5, 2, 'Perl'); INSERT INTO `catalogs` VALUES (6, 3, 'C++'); INSERT INTO `catalogs` VALUES (7, 6, 'Visual C++'); INSERT INTO `catalogs` VALUES (8, 3, 'Delphi'); INSERT INTO `catalogs` VALUES (9, 0, 'Базы данных'); INSERT INTO `catalogs` VALUES (10, 9, 'MySQL'); INSERT INTO `catalogs` VALUES (11, 9, 'Oracle'); INSERT INTO `catalogs` VALUES (12, 9, 'MS Access'); <?php print "Дерево каталога<br><table border='1'>"; define ('DEF_INDENT',4); function get_tree($parent_id=0,$deep){ //sql запрос $nbsp=str_repeat (" ",$deep*DEF_INDENT); $sql = "SELECT * FROM catalogs WHERE parent_id='$parent_id'"; $ok = mysql_query($sql); while ($row = mysql_fetch_array($ok)){ //получение имени из базы данных $name = $row['cat_name']; $level = $row['cat_id']; //получение длины отступа и имени print "<TR><TD>$nbsp$name</TD></TR>"; //вывод информации полученного каталога get_tree($row['cat_id'],$deep+1); } } get_tree (0,0); print "</table>"; ?> При вводе параметра по ссылке там где получение длинны отступа//получение длины отступа и имени print "<TR><TD>$nbsp<a href='$php_self?w=$parent_id'>$name</a></TD></TR>"; У нас $w начинает определять вложенность, только как с помощью нее вывести блок с подкатегориями немогу понять. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Link Опубликовано 29 Августа 2006 Автор Жалоба Поделиться Опубликовано 29 Августа 2006 Че никто не знает? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.