Категория и подкатегория

Dog

Registered
Привет опитвам се да направя меню с категории и подкатегории

->Parent1
->Parent2
-->>Sub1
-->>Sub2
->Parent3

таблица:
Код:
id | parent_id | name
1  |        0          | Parent1
2  |        0          | Parent2
3  |        2          | Sub1
4  |        2          | Sub2
5  |        0          |  Parent3

Код:
$cat_id=$_GET['cat'];
$result=mysql_query("SELECT id, name FROM `category` WHERE parent_id='0'");
echo "<ul>";
while ($row=mysql_fetch_array($result)) {
echo "<li><a href='category.php?cat={$row['id']}'>{$row['name']}</a></li>";
if($row['id']==$cat_id){
$result_sub=mysql_query("SELECT id, name FROM `category` WHERE parent_id='$cat_id'");
echo "<ul>";
while ($row_sub=mysql_fetch_array($result_sub)) {
echo "<li><a href='category.php?cat={$row_sub['id']}'>{$row_sub['name']}</a></li>";
}
echo "</ul>";
}
}
echo "</ul>";

когато избера линк от подкатегорията (Sub1 или Sub2) подкатегориите изчезват понеже няма сътотведствие в if($row['id']==$cat_id).
 
В интерес на истината след като мина известно време не бих ти препоръчал начина, който съм писал в урока. Да, ако имаш едно подниво на категориите тогава е може и така да го направиш, но ако искаш да направиш множество поднива трябва да си оставиш таблицата както ти е сега. Сега нямам време да напиша урок или да ти обясня как да изкараш подкатегориите, но това е единия добър начин. Другият е Nested Set Model
 
Измислих нещо такова

Код:
$cat_id=$_GET['cat'];
$result=mysql_query("SELECT id, name FROM `category` WHERE parent_id='0'");
echo "<ul>";
while ($row=mysql_fetch_array($result)) {
echo "<li><a href='category.php?cat={$row['id']}'>{$row['name']}</a></li>";

$result_chek=mysql_query("SELECT parent_id FROM `category` WHERE id='$id'");
if(mysql_num_rows($result_chek)){
$parent_id=mysql_result($result_chek, 0, "parent_id");
}	
if($parent_id==$row['id'] || $id==$row['id']){	

$result_sub=mysql_query("SELECT id, name FROM `category` WHERE parent_id='$cat_id'");
echo "<ul>";
while ($row_sub=mysql_fetch_array($result_sub)) {
echo "<li><a href='category.php?cat={$row_sub['id']}'>{$row_sub['name']}</a></li>";
}
echo "</ul>";
}
}
echo "</ul>";
 

Back
Горе