|
|
|
| Вчера, на этом форуме, мне помогли сделать функцию вывода каталога с его подкаталогами. Сейчас практически все работает как мне нужно, осталась одна небольшая доработка, а именно: если сейчас нажать на каталог, то выводится вся информация из базы целиком, а мне нужно, чтобы выводило только сам этот каталог и его подкаталоги.
Вот код:
<?php
function pre($data_assoc,$i,$parsed)
{
if (!in_array($data_assoc[$i]['id_catalog'],$parsed))
{
echo "<li><a href=?id_cat={$data_assoc[$i]['id_catalog']}>",$data_assoc[$i]['name'],"</a></li>";
$parsed[] = $data_assoc[$i]['id_catalog'];
for ($j=1;$j<=count($data_assoc);$j++)
{
if($data_assoc[$i]['id_catalog']==$data_assoc[$j]['id_parent'])
{
echo "<ul>";
$parsed = pre($data_assoc,$j,$parsed);
echo "</ul>";
}
}
}
return $parsed;
}
$query = "SELECT * FROM catalog;";
$result = mysql_query($query);
if (mysql_num_rows($result)>0)
{
$parsed = array();
while($temp = mysql_fetch_assoc($result))
$data_assoc[] = $temp;
echo "<ul>";
foreach($data_assoc as $row)
{
if ($row['id_parent']==0)
{
$parsed = pre($data_assoc,$row['id_catalog']-1,$parsed);
}
}
echo "</ul>";
}
?>
|
Собственно раньше у меня все выводилось, так как я делал вот такой запрос к БД:
$query = "SELECT * FROM catalog WHERE id_parent='$id_cat'";
if($pgs = mysql_query($query))
{
|
Но вот как его прилепить к этой функции - не пойму, да и мне кажется, что можно как то обработать уже взятый массив, но как тоже увы не могу понять, так что прошу помощи. | |
|
|
|
|
|
|
|
для: Dizels
(21.02.2008 в 10:49)
| | Так передавайте в функцию ИД-каталога текущего | |
|
|
|
|
|
|
|
для: mihdan
(21.02.2008 в 11:18)
| | Id каталога и так передается:
<a href=?id_cat={$data_assoc[$i]['id_catalog']}>",$data_assoc[$i]['name'],"</a>
|
но вот выводится почему-то все равно все содержание таблицы | |
|
|
|
|
|
|
|
для: Dizels
(21.02.2008 в 11:22)
| |
<?
$query = "SELECT * FROM `catalog` WHERE `id_catalog`=$id_cat";
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(21.02.2008 в 11:46)
| | Сделал вот так:
if(empty($_GET['id_cat']))
{
$query = "SELECT * FROM catalog;";
}
else
{
$query = "SELECT * FROM `catalog` WHERE `id_catalog`=$id_cat";
}
$result = mysql_query($query);
if (mysql_num_rows($result)>0)
{
$parsed = array();
while($temp = mysql_fetch_assoc($result))
$data_assoc[] = $temp;
echo "<ul>";
foreach($data_assoc as $row)
{
if ($row['id_parent']==0)
{
$parsed = pre($data_assoc,$row['id_catalog']-1,$parsed);
}
}
echo "</ul>";
|
При таком подходе отображается только главный каталог а его подкаталоги - нет.
Пробовал менять:
$query = "SELECT * FROM `catalog` WHERE `id_catalog`=$id_cat";
|
на
$query = "SELECT * FROM `catalog` WHERE `id_parent`=$id_cat";
|
вообще не показывает, почему - не пойму. | |
|
|
|