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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: вывод категорий с подкатегориями

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: Петр   (22.02.2008 в 12:10)   письмо автору
 
   для: Dizels   (21.02.2008 в 19:28)
 

Если parent = 0 (ну или 1 как там у тебя) то это каталог (выделяем его как нужно), а все остальные - это подкаталоги

   
 
 автор: MIchail1982   (22.02.2008 в 10:32)   письмо автору
 
   для: Dizels   (21.02.2008 в 19:28)
 

Тогда проще
$query = "SELECT * FROM catalog WHERE `id_parent`='0';";
$result = mysql_query($query);
if (mysql_num_rows($result)>0)
    {
    while($catalog = mysql_fetch_assoc($result))
        {
        echo "<big><a href={$catalog[id_catalog]}>{$catalog[name]}</a></big><br>";
        $query = "SELECT * FROM catalog WHERE `id_parent`='".$catalog[id_catalog]."';";
        $result_2 = mysql_query($query);
        if (mysql_num_rows($result_2)>0)
            {
            while($sub_catalog = mysql_fetch_assoc($result_2))
                {
                echo "&nbsp;<a href={$sub_catalog[id_catalog]}>{$sub_catalog[name]}</a>&nbsp;";
                }
            }
        else
            echo "No Subcategories";
        echo "<br>";
        }
    }

   
 
 автор: Dizels   (21.02.2008 в 19:28)   письмо автору
 
   для: MIchail1982   (21.02.2008 в 17:58)
 

А как тогда сделать так, чтобы он выводил только подкаталоги? Т.е. сами каатлоги не выводил.

P.S. просто мне нужно чтобы визуально каталоги отличались от подкаталогов.
Да и сам вывод нужно настроить более красиво (в таблицу все загнать, а то сильно большой список получается, хочу его поделить).

Т.е. в результате я хочу получить нечто вроде Яндекс каталога по структуре, как такое сделать?

   
 
 автор: MIchail1982   (21.02.2008 в 17:58)   письмо автору
 
   для: Dizels   (21.02.2008 в 17:22)
 

да, это называется рекурсия
раньше этот код выводил любое количество вложений

   
 
 автор: Dizels   (21.02.2008 в 17:22)   письмо автору
 
   для: Dizels   (21.02.2008 в 16:50)
 

и вот в функции еще не понятно, она что сама себя вызывает?

   
 
 автор: Dizels   (21.02.2008 в 16:50)   письмо автору
 
   для: Dizels   (20.02.2008 в 19:46)
 

Начал разбираться в коде и не все понятно, прошу объяснить:


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; 
}  

Поясните пожалуйста поэтапно действия этой функции
$parsed = pre($data_assoc,$row[\'id_catalog\']-1,$parsed); 

а так же то, что происходит когда мы ее вызываем.

   
 
 автор: Dizels   (20.02.2008 в 19:46)   письмо автору
 
   для: MIchail1982   (20.02.2008 в 17:54)
 

MIchail1982, большое человеческое спасибо!!!

   
 
 автор: MIchail1982   (20.02.2008 в 17:54)   письмо автору
 
   для: Dizels   (20.02.2008 в 17:39)
 

echo "<li><a href=?id_catalog={$data_assoc[$i]['id_catalog']}>",$data_assoc[$i]['name'],"</a></li>";

   
 
 автор: Dizels   (20.02.2008 в 17:39)   письмо автору
 
   для: MIchail1982   (20.02.2008 в 17:34)
 

передается ссылка вида:
http://localhost/enterprise/index.php?id_catalog=Array['id_catalog']


:(

   
 
 автор: MIchail1982   (20.02.2008 в 17:34)   письмо автору
 
   для: Dizels   (20.02.2008 в 16:46)
 

вроди так
function pre($data_assoc,$i,$parsed)
    {
    if (!in_array($data_assoc[$i]['id_catalog'],$parsed))
        {
        echo "<li><a href=?id_catalog=$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;
    } 

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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