dorfey
Guest
итерация. помогите с выводом ветки.
Возникла следующая проблема.
Имеем таблицу в БД MySQL следующего вида:
| id | name | parent |
| 1 | компы | 0 |
| 2 | на intel | 1 |
и т.д.
В таблице хранятся разделы сайта.
id - айдишник раздела
name - название раздела
parent - айдишник верхнего уровня.
хотелось бы вывести скажем так ветку разделов, до раздела в котором находится юзер.
Сейчас это у меня реализовано так:
# Достаем айдишник родительского раздела
$select = mysql_query("select * from TABLE where cid=\"$_GET[cat]\"");
$r = mysql_fetch_array($select);
# Тут поехали выбирать разделы
$a1 = mysql_query("select * from table where cid=\"$r[parent]\"");
$c1 = mysql_num_rows($a1);
if($c1 > 0)
{
$b1 = mysql_fetch_array($a1);
$a2 = mysql_query("select * from table where cid=\"$b1[parent]\"");
$c2 = mysql_num_rows($a2);
if($c2 > 0)
{
$b2 = mysql_fetch_array($a2);
$a3 = mysql_query("select * from table where cid=\"$b2[parent]\"");
$c3 = mysql_num_rows($a3);
if($c3 > 0)
{
$b3 = mysql_fetch_array($a3);
$a4 = mysql_query("select * from table where cid=\"$b3[parent]\"");
$c4 = mysql_num_rows($a4);
if($c4 > 0)
{
$b4 = mysql_fetch_array($a4);
$a5 = mysql_query("select * from table where cid=\"$b4[parent]\"");
$c5 = mysql_num_rows($a5);
if($c5 > 0)
{
$b5 = mysql_fetch_array($a5);
}
}
}
}
}
# принтуем названия разделов.
print("каталог > ");
if($b5 != NULL) { print("$b5[name] > "); }
if($b4 != NULL) { print("$b4[name] > "); }
if($b3 != NULL) { print("$b3[name] > "); }
if($b2 != NULL) { print("$b2[name] > "); }
if($b1 != NULL) { print("$b1[name] > "); }
print("$r[name]");
Если ктонибудь поймет что я тут написал просьба помочь избавиться от всех запросов, объединив их в итерацию.
Заранее благодарен.
Возникла следующая проблема.
Имеем таблицу в БД MySQL следующего вида:
| id | name | parent |
| 1 | компы | 0 |
| 2 | на intel | 1 |
и т.д.
В таблице хранятся разделы сайта.
id - айдишник раздела
name - название раздела
parent - айдишник верхнего уровня.
хотелось бы вывести скажем так ветку разделов, до раздела в котором находится юзер.
Сейчас это у меня реализовано так:
# Достаем айдишник родительского раздела
$select = mysql_query("select * from TABLE where cid=\"$_GET[cat]\"");
$r = mysql_fetch_array($select);
# Тут поехали выбирать разделы
$a1 = mysql_query("select * from table where cid=\"$r[parent]\"");
$c1 = mysql_num_rows($a1);
if($c1 > 0)
{
$b1 = mysql_fetch_array($a1);
$a2 = mysql_query("select * from table where cid=\"$b1[parent]\"");
$c2 = mysql_num_rows($a2);
if($c2 > 0)
{
$b2 = mysql_fetch_array($a2);
$a3 = mysql_query("select * from table where cid=\"$b2[parent]\"");
$c3 = mysql_num_rows($a3);
if($c3 > 0)
{
$b3 = mysql_fetch_array($a3);
$a4 = mysql_query("select * from table where cid=\"$b3[parent]\"");
$c4 = mysql_num_rows($a4);
if($c4 > 0)
{
$b4 = mysql_fetch_array($a4);
$a5 = mysql_query("select * from table where cid=\"$b4[parent]\"");
$c5 = mysql_num_rows($a5);
if($c5 > 0)
{
$b5 = mysql_fetch_array($a5);
}
}
}
}
}
# принтуем названия разделов.
print("каталог > ");
if($b5 != NULL) { print("$b5[name] > "); }
if($b4 != NULL) { print("$b4[name] > "); }
if($b3 != NULL) { print("$b3[name] > "); }
if($b2 != NULL) { print("$b2[name] > "); }
if($b1 != NULL) { print("$b1[name] > "); }
print("$r[name]");
Если ктонибудь поймет что я тут написал просьба помочь избавиться от всех запросов, объединив их в итерацию.
Заранее благодарен.