Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с рекурсией!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
sofck
Отправлено: 06 Февраля, 2011 - 12:49:38
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Есть функия построения дерева.

PHP:
скопировать код в буфер обмена
  1. function cataloglinks($subto=0)//отображение дерева каталога
  2. {
  3.  
  4. $res = $db->customback('select id,subto,name from pages where list=1 and status=1 order by sort DESC')
  5. or die ("ошибко ".mysql_error());
  6. if(mysql_num_rows($res)<1){return false;}else{
  7.           while ($line = mysql_fetch_assoc($res)) {
  8.                 $tags[ (int) $line['subto'] ][] = array( (int) $line['id'], $line['name']);
  9.         }  
  10.         echo '<ul>';
  11.         for ($i=count($tags[$subto])-1; $i>=0;$i--) {//
  12.                
  13.                                 echo '<li>';   
  14.                                
  15.                         echo $tags[$subto][$i][1];
  16.                
  17.  if (isset($tags[ $tags[$subto][$i][0] ]))
  18.  {
  19. cataloglinks($tags[$subto][$i][0]);
  20.         }
  21.                 echo '</li>';
  22.         }
  23.         echo '</ul>';
  24. }
  25.  
  26. }        


как сделать что бы список был нумерованный. Ну тоесть для каждого вложения к началу нумерация подставлялось значение родителя. Ну к примеру есть пункт 2 у него вложения 2.1 2.2 дальше у пункта 2.2 есть тоже вложения и там уже было 2.2.1 и т.д


p.s. ($db->customback не обращайте внимания =)))

(Отредактировано автором: 06 Февраля, 2011 - 14:44:47)

 
 Top
grefon
Отправлено: 06 Февраля, 2011 - 12:52:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Радость Заменить <ul> ... </ul> на <ol> ... </ol>.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
sofck
Отправлено: 06 Февраля, 2011 - 13:13:54
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




grefon пишет:
Радость Заменить <ul> ... </ul> на <ol> ... </ol>.


не то!)) Во первый мне нужно чтобы для каждого вложения к началу нумерация подставлялось значение родителя.

для того что бы в конце перечисления дерева будет создался массив
$data['name'] = 3.2.2 Страница
$data['uri'] = Где будет адрес страницы
 
 Top
Мелкий Супермодератор
Отправлено: 06 Февраля, 2011 - 13:23:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




http://htmlbook[dot]ru/css/counter-reset
Эту задачу CSS решать умеет

(Отредактировано автором: 06 Февраля, 2011 - 13:24:10)



-----
PostgreSQL DBA
 
 Top
grefon
Отправлено: 06 Февраля, 2011 - 13:24:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Цитата:
$data['name'] = 3.2.2 Страница
$data['uri'] = Где будет адрес страницы

Я правильно понял, что Вам нужно не только пронумеровать структуру, но и запихнуть ее в многомерный массив, где ключами будут номера списка, а значениями адреса страниц?
То есть массив должен будет выглядеть так:
Цитата:
"1" => "Страница первая"
"2" => "Вторая"
"2.1" => "Два один"
"2.2" => "Еще страница"
"3" => "Третья страница"


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
sofck
Отправлено: 06 Февраля, 2011 - 13:47:57
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




На счет массива это я так к слову сказал чтобы показать что <ol> не подходит )


Мне нужно получить переменную для каждого элемента которая содержит номера элемента в формате что я указал. Тоесть её номер в текущей категории и перед ни номер родителя
(Добавление)
Мелкий пишет:
http://htmlbook[dot]ru/css/counter-reset
Эту задачу CSS решать умеет


Ну только мне нужно не просто выводить это значение а получить его в "руки" для дальнейших действий!)
 
 Top
sofck
Отправлено: 06 Февраля, 2011 - 16:06:14
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Разобрался!
Спасибо всем кто откликнулся. Ну а кому может потребуется то вот работающий пример.
Естественно для работы нужно поправить кое чего!))

вот код:
PHP:
скопировать код в буфер обмена
  1. <?
  2. function cataloglinks($subto=0,$num=NULL)
  3. {
  4. $n=1;
  5. $res = $this->db->customback('select id,subto,name from pages where list=1 and status=1 order by sort DESC')
  6. or die ("ошибко ".mysql_error());
  7. if(mysql_num_rows($res)<1){return false;}else{
  8.           while ($line = mysql_fetch_assoc($res)) {
  9.                 $tags[ (int) $line['subto'] ][] = array( (int) $line['id'], $line['name']);
  10.         }  
  11.         echo '<ul>';
  12.                
  13.         for ($i=count($tags[$subto])-1; $i>=0;$i--) {//
  14.                
  15.                                 echo '<li>';
  16.                                 if (isset($tags[ $tags[$subto][$i][0] ]))
  17.                                 {
  18.                                         echo $num;$num.=$n.'.';
  19.                                 }
  20.                                 else
  21.                                 {
  22.                                 echo $num;
  23.                                 }
  24.                                 echo $n++;
  25.                                 echo $tags[$subto][$i][1];             
  26.  
  27.  
  28.  if (isset($tags[ $tags[$subto][$i][0] ]))
  29.  {
  30.         cataloglinks($tags[$subto][$i][0],$num); $num=NULL;
  31. }
  32.  echo '</li>';
  33.       }
  34.         echo '</ul>';
  35. }
  36.  
  37. }  
  38. ?>

(Отредактировано автором: 06 Февраля, 2011 - 16:07:55)

 
 Top
JustUserR
Отправлено: 06 Февраля, 2011 - 16:25:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




sofck Для осуществления автоматизированной генерации дерева зависимых элементов выбор которых производится из таблицы БД на основе указанных информационных полей реляционной связи - целесообразно использование средств создания SQL-процедур и выполнения целевых операций на стороне сервера БД - такой подход в значительной мере обеспечивает большую эффективность по причине снижения количества требуемых SQL-запросов и реализации прямого доступа в хранению и индексации информационных на сервере БД


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB