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:

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Копать в сторону операторов сравнения.
 

searchrss

Новичок
я думал над этим, но элементарно не хватает знаний, я обязательно выучу, я не тупой, просто меню мне нужно сделать срочно, я по-этому и сижу вот ночь целую
 

zerkms

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

searchrss

Новичок
мда, вот так помогли, придется копать какие-то движки ради меню, спасибо =(
динамику я имел ввиду джаваскрипт, разве не понятно?

PHP:
SELECT * FROM pod_categories WHERE cat_id=$cat_id ORDER BY pod_cat_id
что смешного?
 

Фанат

oncle terrible
Команда форума
аттракцион невиданной щедрости

-~{}~ 01.03.09 13:57:

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

-~{}~ 01.03.09 13:59:

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

searchrss

Новичок
это порыв от безысходности, просто очень нужна помощь, а денег нет почти, ну в Украине 1 вмз хватило бы на бутылку пива :)

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

Фанат

oncle terrible
Команда форума
сотри я сказал. иначе тебя вообще зашпыняют, дурака

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

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

searchrss

Новичок
стер!

бд нужна, так как я построил сайт на ней и активно использую
не хватает знаний в пхп на данный момент, а дело срочное, не успею перелопатить информацию
 

Фанат

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

searchrss

Новичок
ну ничего сложного нет в том что я делал, там основы
шяс буду пробовать делать проверки, отпишусь, спасибо
 

Фанат

oncle terrible
Команда форума
ну так ничего сложного и в проверке нет!
просто обычно, если человек добрался до бд, то он в состоянии написать скрипт вида "если ввели цыферку 1 выдать "мало!", а если 100 - "много".
как тебя угораздило пропустить такой сложный элемент программирования - загадка
 

searchrss

Новичок
я умею пользоваться конструкцией ИФ, просто небыло еще такого чтоб оно было так заковыристо в ассоциативных массивах через задницу
 

Фанат

oncle terrible
Команда форума
какая разница, какой там массив?
почему в коде нет ДАЖЕ ПОПЫТКИ проверить, а тупой вывод всех подкатегорий?
 

Ivanov

Новичок
ну если твой вариант брать, то

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";     }
 
Сверху