PHP + MYSQL создаю меню - не выходит задуманное

searchrss

Новичок
PHP + MYSQL создаю меню - не выходит задуманное

Всем добра! :D

я еще только учусь и являюсь новичком, но в данный момент мне нужна помощь срочно :(

Ситуация следующая:

* Apache/2.2.11 (Win32) PHP/5.2.8
* Версия MySQL-клиента: 5.0.51a
* PHP расширение: mysqli



Есть такие таблички:

categories (cat_id, cat_name)

и

pod_categories (pod_cat_id, pod_cat_name, cat_id)

В подкатегориях - cat_id для связывания этих таблиц. Чтоб знать к какой категории относится подкатегория.
Думаю вы поняли.

Значит делаю я меню вобщем.

закрытое меню имеет вот такой вид:

PHP:
<p><a href="index.php?cat_id=1">хрень1</a></p>
<p><a href="index.php?cat_id=2">хрень2</a></p>
<p><a href="index.php?cat_id=3">хрень3</a></p>
<p><a href="index.php?cat_id=4">хрень4</a></p>
<p><a href="index.php?cat_id=5">хрень5</a></p>
и так далее...

Меню с открытым пунктом "хрень2" например имеет вид:

PHP:
<p><a href="index.php?cat_id=1">хрень1</a></p>
<p><a href="index.php?cat_id=2">хрень2</a></p>
<ul>
<li><a href="pod_cat.php?id=1">фишка1</a></li>
<li><a href="pod_cat.php?id=1">фишка2</a></li>
<li><a href="pod_cat.php?id=1">фишка3</a></li>
</ul>
<p><a href="index.php?cat_id=3">хрень3</a></p>
<p><a href="index.php?cat_id=4">хрень4</a></p>
<p><a href="index.php?cat_id=5">хрень5</a></p>

Никакой динамики не надо. Только хтмл, цсс и пхп юзаю.

Имеем страницу index.php, там меню:

PHP:
$sql_cat_title=mysql_query("SELECT cat_id,cat_name FROM categories ORDER BY cat_id");
while ($go_cat_title=mysql_fetch_array($sql_cat_title))
{
	echo "<p><a href=\"index.php?cat_id={$go_cat_title['cat_id']}\">{$go_cat_title['cat_name']}</a></p>\n";
}

При нажатии передаем индексу гет - cat_id
:) пока-что вроде всё верно...



Теперь нужно всё это скомпоновать, чтоб индекс принял гет и вывел под нужно категорией список её подкатегорий:

PHP:
if (isset($_GET['cat_id'])) {
  $cat_id = $_GET['cat_id'];
  $sql_cat_title0=mysql_query("SELECT * FROM categories ORDER BY cat_id");
  while ($go_cat_title0=mysql_fetch_assoc($sql_cat_title0)) {
    echo "<p><a href=\"index.php?cat_id={$go_cat_title2['cat_id']}\">{$go_cat_title0['cat_name']}</a></p>\n<ul>";
    $sql_pod_cat_title=mysql_query("SELECT * FROM pod_categories WHERE cat_id=$cat_id ORDER BY pod_cat_id");
    while ($go_pod_cat_title=mysql_fetch_assoc($sql_pod_cat_title)) {
      echo "<li><a href=\"pod_cat.php?id={$go_pod_cat_title['pod_cat_id']}\">{$go_pod_cat_title['pod_cat_name']}</a></li>\n";
    }
    echo "</ul>";
  }
} else {
  $sql_cat_title=mysql_query("SELECT cat_id,cat_name FROM categories ORDER BY cat_id");
  while ($go_cat_title=mysql_fetch_array($sql_cat_title)) {
    echo "<p><a href=\"index.php?cat_id={$go_cat_title['cat_id']}\">{$go_cat_title['cat_name']}</a></p>\n";
  }
}

Выбираем "хрень1"
Получается фигня! Не то что нужно.
Выводит подкатегории ко всем категориям, а надо только к нужной, которая передана в ГЕТ

PHP:
<p><a href="index.php?cat_id=1">хрень1</a></p>
<ul>
<li><a href="pod_cat.php?id=1">фишка1 от хрени1</a></li>
<li><a href="pod_cat.php?id=2">фишка2 от хрени1</a></li>
<li><a href="pod_cat.php?id=3">фишка3 от хрени1</a></li>
<li><a href="pod_cat.php?id=4">фишка4 от хрени1</a></li>
</ul>
<p><a href="index.php?cat_id=2">хрень2</a></p>
<ul>
<li><a href="pod_cat.php?id=1">фишка1 от хрени1</a></li>
<li><a href="pod_cat.php?id=2">фишка2 от хрени1</a></li>
<li><a href="pod_cat.php?id=3">фишка3 от хрени1</a></li>
<li><a href="pod_cat.php?id=4">фишка4 от хрени1</a></li>
</ul>

Подмогите как сделать нормально людское меню по моей задумке. :(

-~{}~ 01.03.09 03:08:

еще подумал-поразмышлял - никаких догадок. Помогите пожалуйста

-~{}~ 01.03.09 03:16:

хотя бы в какую сторону копать чтоб вывелся массив, а под нужным элементом массива еще один массив с содержимым поля равным содержимому поля родителя ??? (((((((((
 
Копать в сторону операторов сравнения.
 
я думал над этим, но элементарно не хватает знаний, я обязательно выучу, я не тупой, просто меню мне нужно сделать срочно, я по-этому и сижу вот ночь целую
 
я думал над этим, но элементарно не хватает знаний, я обязательно выучу, я не тупой, просто меню мне нужно сделать срочно, я по-этому и сижу вот ночь целую
нефиг браться за то, что не можешь сделать.
 
мда, вот так помогли, придется копать какие-то движки ради меню, спасибо =(
динамику я имел ввиду джаваскрипт, разве не понятно?

PHP:
SELECT * FROM pod_categories WHERE cat_id=$cat_id ORDER BY pod_cat_id
что смешного?
 
аттракцион невиданной щедрости

-~{}~ 01.03.09 13:57:

сотри эту приписку, не позорься

-~{}~ 01.03.09 13:59:

движки тебе не помогут.
нет смысла читать "войну и мир", чтобы написать "мама мыла раму".
зачем ты выводишь ВСЕ подкатегории, если тебе нужна только одна?
 
это порыв от безысходности, просто очень нужна помощь, а денег нет почти, ну в Украине 1 вмз хватило бы на бутылку пива :)

при получении ГЕТ нужно опять вывести весь список категорий, а под нужной категорией, список её подкатегорий.
Если б нужно было просто вывести после получения ГЕТ просто название этой категории и её подкатегории то проблем бы небыло, а тут надо все, а под нужной подкатегории(
 
сотри я сказал. иначе тебя вообще зашпыняют, дурака

помощь тебе не нужна.
во всяком случае с этим скриптом.
тебе надо учить азбуку программирования.
нафига тебе база данных, если ты не можешь сделать простейшую проверку?

почему ты не проверяешь, какая категория передана?
 
стер!

бд нужна, так как я построил сайт на ней и активно использую
не хватает знаний в пхп на данный момент, а дело срочное, не успею перелопатить информацию
 
я понимаю, что бд нужна
я не понимаю, как ты дошел до бд, не зная элементарных вещей.
почему ты не проверяешь, какая категория передана?
 
ну ничего сложного нет в том что я делал, там основы
шяс буду пробовать делать проверки, отпишусь, спасибо
 
ну так ничего сложного и в проверке нет!
просто обычно, если человек добрался до бд, то он в состоянии написать скрипт вида "если ввели цыферку 1 выдать "мало!", а если 100 - "много".
как тебя угораздило пропустить такой сложный элемент программирования - загадка
 
я умею пользоваться конструкцией ИФ, просто небыло еще такого чтоб оно было так заковыристо в ассоциативных массивах через задницу
 
какая разница, какой там массив?
почему в коде нет ДАЖЕ ПОПЫТКИ проверить, а тупой вывод всех подкатегорий?
 
ну если твой вариант брать, то

PHP:
echo "<p><a href=\"index.php?cat_id={$go_cat_title2['cat_id']}\">{$go_cat_title0['cat_name']}</a></p>\n<ul>";

после этого - вот здесь - делай проверку на id твоей хрени в БД с переданным id хрени в запросе, и если они совпадают то выполняй это

PHP:
$sql_pod_cat_title=mysql_query("SELECT * FROM pod_categories WHERE cat_id=$cat_id ORDER BY pod_cat_id");     while ($go_pod_cat_title=mysql_fetch_assoc($sql_pod_cat_title)) {       echo "<li><a href=\"pod_cat.php?id={$go_pod_cat_title['pod_cat_id']}\">{$go_pod_cat_title['pod_cat_name']}</a></li>\n";     }
 
Сверху