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

Форум MySQL

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

 

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

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

тема: Рекурсивный спуск по каталогу
 
 автор: selma   (10.11.2011 в 04:12)   письмо автору
 
 

Добрый день!

Есть БД, в которой хранятся каталоги и подкаталоги, глубина вложений не ограничено

CREATE TABLE IF NOT EXISTS `table` (
  `id` int(9) NOT NULL auto_increment,
  `names` text NOT NULL,
  `id_p` int(9) NOT NULL
  PRIMARY KEY  (`id`)
)  ;

--
-- Дамп данных таблицы `table`
--

INSERT INTO `table` (`id`, `names`, `id_p`) VALUES
(1, 'Андроид', 0),
(2, 'Windows-M', 0),
(3, 'Symbian', 0),
(4, 'Игры', 1),
(5, 'Программы', 1),
(6, '240*320', 4);

Использую функцию для вывода дерева:

<?php
$res 
mysql_query("SELECT `id`,`id_p`,`names` FROM `table` ORDER BY `id`, `id_p` ASC");
 while (
$line mysql_fetch_assoc($res)) 
        {
        
$tags[ (int) $line['id_p'] ][] = array( (int) $line['id'], $line['names']);
        }
      function 
derevo($parent=0
        {
        global 
$tags;
        echo 
'<ul>';
        for (
$i=0;$i<=count($tags[$parent])-1;$i++) 
          {
          echo 
'<li><a href="index.php?id='.$tags[$parent][$i][0].'">'.$tags[$parent][$i][1].'</a>';
          if (isset(
$tags$tags[$parent][$i][0] ])) 
            {
            
derevo($tags[$parent][$i][0]);
            }
          echo 
'</li>';
          }
        echo 
'</ul>';
        }
      return 
derevo();
?>


Как сделать, чтобы родительский каталог был выделен жирным, а все подкаталоги были ссылками??????

  Ответить  
 
 автор: Ильдар   (10.11.2011 в 10:41)   письмо автору
 
   для: selma   (10.11.2011 в 04:12)
 

ну... примерно так:

<?php 
$res 
mysql_query("SELECT `id`,`id_p`,`names` FROM `table` ORDER BY `id`, `id_p` ASC"); 
 while (
$line mysql_fetch_assoc($res))  
        { 
        
$tags[ (int) $line['id_p'] ][] = array( (int) $line['id'], $line['names']); 
        } 
      function 
derevo($parent=0)  
        { 
        global 
$tags
        echo 
'<ul>'
        for (
$i=0;$i<=count($tags[$parent])-1;$i++)  
          { 
if (
$parent==0) {
$b1 "<b>";
$b2 "</b>";
}
          echo 
'<li><a href="index.php?id='.$tags[$parent][$i][0].'">'.$b1.$tags[$parent][$i][1].$b1.'</a>'
          if (isset(
$tags$tags[$parent][$i][0] ]))  
            { 
            
derevo($tags[$parent][$i][0]); 
            } 
          echo 
'</li>'
          } 
        echo 
'</ul>'
        } 
      return 
derevo(); 
?>

  Ответить  
 
 автор: selma   (10.11.2011 в 12:20)   письмо автору
 
   для: Ильдар   (10.11.2011 в 10:41)
 

нет. так работать не будет, ваш код выведет все ссылки жирными, а нужно чтобы жирными были только каталоги с родительским id (id_p) = 0

  Ответить  
 
 автор: selma   (11.11.2011 в 02:17)   письмо автору
 
   для: selma   (10.11.2011 в 12:20)
 

Никто не знает?

  Ответить  
 
 автор: cheops   (11.11.2011 в 10:01)   письмо автору
 
   для: selma   (10.11.2011 в 12:20)
 

Попробуйте фрагмент
if ($parent==0) { 
$b1 = "<b>"; 
$b2 = "</b>"; 
}
заменить на
$b1 = $b2 = "";
if ($parent==0) { 
$b1 = "<b>"; 
$b2 = "</b>"; 
}

  Ответить  
 
 автор: selma   (12.11.2011 в 09:10)   письмо автору
 
   для: cheops   (11.11.2011 в 10:01)
 

Хеопс, огромное мерси:) мысль уловила


<?
$b1 
$b2 NULL
if (
$parent>0) {  
$b1 "<a href='index.php?id=".$tags[$parent][$i][0]."'>";  
$b2 "</a>";  
}
 echo 
'<li>'.$b1.$tags[$parent][$i][1].$b2;  
?>

  Ответить  
Rambler's Top100
вверх

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