Drinki
Guest
Древовидная структура таблицы mySQL (проблема с выводом дерева)
Пишу скрипт каталога с древовидной системой. Всё хорошо только вот никак немогу дописать функцию вывода дерева !!!! У меня видать логического мышления нехватает, а может и знаний... Вобщем у меня есть таблица:
level |parent | title |status|
0 | | NULL |NULL | 2
0_0 | 0 | Раздел1 |folder| 3
0_1 | 0 | Раздел2 |NULL | 0
0_0_2 | 0_0 | Р_1_предмет_1 |NULL | 0
0_0_0 | 0_0 | Р_1_папка_1 |folder| 1
0_0_0_0 | 0_0_0 | Test folder |folder| 0
0_0_1 | 0_0 | Test folder 2 |folder| 0
ВОТ! и такая функция:
и вот что она мне выводит:
+ 0_0 Раздел1 - folder (3)
+ 0_0_0 Р_1_папка_1 - folder (1)
+ 0_0_0_0 Test folder - folder (0)
+ 0_0_1 Test folder 2 - folder (0)
у меня уже мозги выкипели !!!! подскажите плиз как мне её дописать чтоб она всё правильно выодила.....
ЗАРАНИЕ БЛАГОДАРЕН!!!
Пишу скрипт каталога с древовидной системой. Всё хорошо только вот никак немогу дописать функцию вывода дерева !!!! У меня видать логического мышления нехватает, а может и знаний... Вобщем у меня есть таблица:
level |parent | title |status|
0 | | NULL |NULL | 2
0_0 | 0 | Раздел1 |folder| 3
0_1 | 0 | Раздел2 |NULL | 0
0_0_2 | 0_0 | Р_1_предмет_1 |NULL | 0
0_0_0 | 0_0 | Р_1_папка_1 |folder| 1
0_0_0_0 | 0_0_0 | Test folder |folder| 0
0_0_1 | 0_0 | Test folder 2 |folder| 0
ВОТ! и такая функция:
PHP:
$listing['catalog'] = $dbt_catalog;//-----таблица
$listing['glue'] = "_";//-----------------символ склеивающий индификатор
$listing['start'] = "0";//---------уровень с которого начинается показ каталога
function catalog_show ($listing){
$query="SELECT * FROM ".$listing['catalog']." WHERE level='".$listing['start']."'";
$result=mysql_query($query) or die ("<center>(= Ôîíàðü =)<br> Òàêîãî ðàçäåëà íåò!!!!!!!!!!!!!!!!</center>");
$row = mysql_fetch_array($result);
echo "<br>";
for ($i=0; $i < $row['count']; $i++){
$query="SELECT * FROM ".$listing['catalog']." WHERE level='".$listing['start']."".$listing['glue']."".$i."'";
$result=mysql_query($query) or die ("<center>(= Ôîíàðü =)<br> Òàêîãî ðàçäåëà íåò!!!</center>");
$row = mysql_fetch_array($result);
if ($row['status'] == "folder"){
echo "+ ";
echo "".$row['level']." ".$row['title']." - ".$row['status']." (".$row['count'].")<br>";
$listing['start'] = "".$row['level']."";
if ($row['count'] > 0){
catalog_show ($listing);
}
}
if ($row['status'] == "item"){
echo" ";
echo "".$row['level']." ".$row['title']." - ".$row['status']." (".$row['count'].")<br>";
catalog_show ($listing);
}
}
}
+ 0_0 Раздел1 - folder (3)
+ 0_0_0 Р_1_папка_1 - folder (1)
+ 0_0_0_0 Test folder - folder (0)
+ 0_0_1 Test folder 2 - folder (0)
у меня уже мозги выкипели !!!! подскажите плиз как мне её дописать чтоб она всё правильно выодила.....
ЗАРАНИЕ БЛАГОДАРЕН!!!