Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с выводов по определенным параметрам
 
 автор: Dizels   (21.02.2008 в 10:49)   письмо автору
 
 

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

Вот код:
<?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))
        {

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

   
 
 автор: mihdan   (21.02.2008 в 11:18)   письмо автору
 
   для: Dizels   (21.02.2008 в 10:49)
 

Так передавайте в функцию ИД-каталога текущего

   
 
 автор: Dizels   (21.02.2008 в 11:22)   письмо автору
 
   для: mihdan   (21.02.2008 в 11:18)
 

Id каталога и так передается:
<a href=?id_cat={$data_assoc[$i]['id_catalog']}>",$data_assoc[$i]['name'],"</a>

но вот выводится почему-то все равно все содержание таблицы

   
 
 автор: mihdan   (21.02.2008 в 11:46)   письмо автору
 
   для: Dizels   (21.02.2008 в 11:22)
 


<?
$query 
"SELECT * FROM `catalog` WHERE `id_catalog`=$id_cat";  
?>

   
 
 автор: Dizels   (21.02.2008 в 12:25)   письмо автору
 
   для: 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"; 

вообще не показывает, почему - не пойму.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования