Я только начинаю постигать РНР. Думаю, для "матёрого РНР-волка" такой код не проблема, а я вот уже четвертые сутки пошли как бьюсь над ним. Знающие люди, подскажите, что не так.
Вывожу в цикле DO_WHILE такое многоуровневое меню.
Упростила код, чтоб не загромождать суть вопроса:
HTML |
<ul id='menu'> <li><a href='cat.php?cat=1'> cat_1 </a> <ul> <li><a href='cat.php?cat=1&id=1'> id_1 </a></li>
<!--где "cat=1" первичный ключ таблицы БД "tab_cat" --> <li><a href='cat.php?cat=1&id=2'> id_2 </a></li> <!--где "id=n" первичный ключ таблицы БД "tab_id" --> <li><a href='cat.php?cat=1&id=3'> id_3 </a></li> </ul></li>
<li><a href='cat.php?cat=2'> cat_2 </a></li> <!--У "cat_2" нет подменю --> <li><a href='cat.php?cat=3'> cat_3 </a> <ul> <li><a href='cat.php?cat=3&id=11'> id_11 </a></li> <li><a href='cat.php?cat=3&id=12'> id_12 </a></li> <li><a href='cat.php?cat=3&id=13'> id_13 </a></li> </ul></li> </ul> |
При клике на любую ссылку в браузер выводятся только верхние "id" из списка : "id_1" и "id_11", хотя ссылки в строке состояния и адресной (и в блокноте при просмотре кода) правильные - те, на которые наводишь или кликаешь.
Получается так:
<a href='cat.php?cat=1&id=2'>страница,отображающаяся в браузере: "id_1" (т.е. верхняя из списка для "cat_1")</a>
<a href='cat.php?cat=3&id=13'>страница,отображающаяся в браузере: "id_11" (тоже верхняя из списка для "cat_3")</a>
А страницы "cat_1", "cat_2", "cat_3" выводятся правильно.
Вот сам цикл:
PHP |
<ul id='menu'> <?php if (isset($_GET['cat'])) {$cat = $_GET['cat'];} if (!isset($cat)) {$cat = 1;}
$result_1 = mysql_query ("SELECT id, title FROM tab_cat",$db); if (mysql_num_rows($result_1)>0) { $row1 = mysql_fetch_array ($result_1); do { printf ("<li><a href='cat.php?cat=%s'>%s</a>",$row1["id"],$row1["title"]);
$result_2 = mysql_query ("SELECT id, title FROM tab_id WHERE cat='$cat'",$db); if (!$result_2) {$cat++;} //если подменю нет, идем дальше
if (mysql_num_rows($result_2)>0) { $row2 = mysql_fetch_array ($result_2); echo "<ul>"; do { printf ("<li><a href='cat.php?cat=%s&id=%s'>%s</a></li>",$row1["id"],$row2["id"],$row2["title"]); } while ($row2 = mysql_fetch_array ($result_2)); echo "</ul></LI>"; } $cat++; } while ($row1 = mysql_fetch_array ($result_1)); } |
Прошу прощения, что такой длинный получился вопрос, но я не знаю, как короче обьяснить суть дела.
Может на форуме уже был подобный вопрос, подскажите, где.
Спустя 1 минута, 7 секунд (3.06.2009 - 11:49) Anopsa написал(а):
Прошу прощения, что такой длинный получился вопрос, но я не знаю, как короче обьяснить суть дела.
Может на форуме уже был подобный вопрос, подскажите, где.
Спустя 6 минут, 24 секунды (3.06.2009 - 11:55) Kuliev написал(а):
Anopsa
в код пока не вникал, но судя по почерку вы у ПОПОВА по видео курсам учитесь?
Спустя 2 минуты, 34 секунды (3.06.2009 - 11:58) sergeiss написал(а):
Цитата (Anopsa @ 3.06.2009 - 12:48) |
При клике на любую ссылку в браузер выводятся только верхние "id" из списка : "id_1" и "id_11", хотя ссылки в строке состояния и адресной (и в блокноте при просмотре кода) правильные - те, на которые наводишь или кликаешь. |
Чудес на свете на бывает...
А что покажет
PHP |
echo 'id received '.$_GET['id'].'<br>'; |
в скрипте cat.php?
Спустя 14 минут, 10 секунд (3.06.2009 - 12:12) Anopsa написал(а):
Цитата |
А что покажетPHP echo 'id received '.$_GET['id'].'<br>';
в скрипте cat.php? |
Не пойму, это куда прописывать, где у меня скрипт cat.php
Спустя 8 минут, 32 секунды (3.06.2009 - 12:20) Anopsa написал(а):
Цитата |
в код пока не вникал, но судя по почерку вы у ПОПОВА по видео курсам учитесь? |
Ну да, а что он что-то не так делает?
Кстати, я его учеников тоже на сайтах сразу узнаю. Соблазн велик - очень уж он доходчиво все обьясняет, самую суть. А в учебниках на 800 стр воды много, а толку..., да и теория от практики очень далеко находится. А без практики ничего не запоминается.
Спустя 8 минут (3.06.2009 - 12:28) Kuliev написал(а):
AnopsaМда, советую вам почитать толковую книжецу, а господина Попова забыть как страшный сон.
Теперь к посту.
Я так понимаю вам нужно влошенное меню типа этого:
При нажатие ссылкы чтобы открывалось подменю выбранной категории?
Спустя 10 минут, 18 секунд (3.06.2009 - 12:39) Anopsa написал(а):
Да,
Россия
Москва
Питер
Самара
Украина
США
Канзас
Техас
Калифорния
Россия, Украина, США в одной таблице БД лежат(tab_cat), а города в другой(tab_id). У каждого города идентификатор его страны. А у Украины, например, подменю нет.
Спустя 6 минут, 20 секунд (3.06.2009 - 12:45) Kuliev написал(а):
AnopsaНа вот думай как своему коду прикрутить
PHP |
//=> array("Донецк","Семфирополь","Одесса") $country = array ("Россия" => array ("Москва","Питер","Самара","Орел"), "Украина"=> array(), "США"=> array ("Техас","Калифорния","Мичиган","Ойева"));
$city = isset($_GET['city'])? $_GET['city'] : null;
echo "<ul>\n";
foreach ($country as $key=>$val) { echo "<li class=li_><a href='".$_SERVER['PHP_SELF']."?city=".$key."'>".$key."</a>\n\r";
if ($city != $key || $city == null) continue;
echo "<ul type=square>\n";
foreach ($country[$city] as $k=>$v) {
echo "<li class=li><a href='".$_SERVER['PHP_SELF']."?city=".$city."&link=".$v."'>".$v."</a>\n"; }
echo "</ul>\n";
}
echo "</ul>\n"; |
Спустя 5 минут, 21 секунда (3.06.2009 - 12:50) sergeiss написал(а):
Цитата (Kuliev @ 3.06.2009 - 13:45) |
На вот думай как своему коду прикрутить |
Не поможет, мне кажется. Потому что
Цитата (Anopsa @ 3.06.2009 - 13:12) |
Не пойму, это куда прописывать, где у меня скрипт cat.php |
Спустя 5 минут, 28 секунд (3.06.2009 - 12:56) Kuliev написал(а):
sergeiss+1
Жду вопросов.
Спустя 1 час, 3 минуты, 9 секунд (3.06.2009 - 13:59) Anopsa написал(а):
Прошу прошния, вынуждена была отлучится.
Kuliev
Спасибо, за советы и участие.
Только у меня "Москва","Питер","Самара","Орел" в цикле должны выводится, из Базы Данных. Это отдельные строки из таблицы БД "tab_id", у каждой, естественно, свой идентификатор.
"Россия, Украина, США" - тоже из БД, но уже из другой таблицы "tab_cat" и тоже должны выводиться в цикле.
Я не знаю зарание сколько будет пунктов в меню, сколько в подменю, может где-то и совсем не будет.
Спустя 5 минут, 8 секунд (3.06.2009 - 14:04) Kuliev написал(а):
Anopsa
Скопируй мой код и посмотри что пулучается, если ты заметил я вырезал из массива и закоментировал города для Украины и там при работе скрипта города для Украмны не выводятся.
Цитата |
Я не знаю зарание сколько будет пунктов в меню, сколько в подменю, может где-то и совсем не будет.
|
Это уже реализованно в этом скрипте.
Спустя 16 минут, 18 секунд (3.06.2009 - 14:20) sergeiss написал(а):
Kuliev!!! Чегой-то ты сегодня невнимательный какой-то
Цитата (Anopsa @ 3.06.2009 - 12:48) |
Упростила код |
Цитата (Kuliev @ 3.06.2009 - 15:04) |
если ты заметил |
Спустя 7 минут, 45 секунд (3.06.2009 - 14:28) Anopsa написал(а):
Да, спасибо, сейчас поэксперименирую, поподставляю свои данные, посмотрю, что получится.
Спустя 1 час, 34 минуты (3.06.2009 - 16:02) Kuliev написал(а):
sergeissМда... Нужно выспаться и отдохнуть.