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
Форумы портала PHP.SU :: Версия для печати :: как вывести вложенности от корня меню до конечного файла в меню ввиде ссылки
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » как вывести вложенности от корня меню до конечного файла в меню ввиде ссылки

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

1. krolik - 06 Мая, 2011 - 00:08:29 - перейти к сообщению
пример:
1
-1.2
2
-2.2
--2.3 --> ссылка вида site.ru/qwerty/qaz/qsc/

вот код
PHP:
скопировать код в буфер обмена
  1.  
  2. //Делаем выборку из базы данных
  3.  
  4. $result=mysql_query("SELECT * FROM menu WHERE menu_shw='1' and menu_site_shw='1' and menu_var='1' order by menu_rang, menu_id ASC");
  5.  
  6. //Если в базе есть записи идем дальше
  7.  
  8.  if   (mysql_num_rows($result) > 0){
  9.  
  10.  $cats = array();
  11.  
  12.  //В цикле  формируем массив категорий в качестве
  13.  // ключа которого выступает  id родительского раздела
  14.  
  15.  while($cat =  mysql_fetch_assoc($result))
  16.        $cats[$cat['menu_parent_id']][] =  $cat;
  17.  
  18.  }    
  19. function  build_tree($cats,$parent_id){
  20.  
  21.  if(is_array($cats) and isset($cats[$parent_id])){
  22.  
  23.    $tree = "<ul id='my-menu' class='sample-menu'>";
  24.  
  25.    foreach($cats[$parent_id] as $cat){
  26.  
  27.       $tree .= "<li>";
  28.      
  29.      $tree .= "<a href='/";
  30.      
  31.       $tree .= $cat['menu_translit']."'>". $cat['menu_name']."</a>";
  32.  
  33.       $tree .=  build_tree($cats,$cat['menu_id']);
  34.  
  35.       $tree .= '</li>';        
  36.  
  37.    }
  38.  
  39.    $tree .= '</ul>';
  40.  
  41.  }
  42.  else return null;          
  43.  
  44.  return $tree;        
  45. }      
  46. echo build_tree($cats,0);
2. Homer - 06 Мая, 2011 - 09:41:19 - перейти к сообщению
проще реализовать рекурсивной функцией
http://www[dot]codenet[dot]ru/webmast/php/tree.php
3. krolik - 06 Мая, 2011 - 10:59:13 - перейти к сообщению
Homer пишет:
проще реализовать рекурсивной функцией
http://www.codenet.ru/webmast/php/tree.php

Огорчение нет уж спасибо, эта инфа стара как мир + посчитайте сколько запросов к базе используется.
Раньше у меня было нечто подобное и код был оптимизирован только так же не было полного адреса до конечной страницы
4. Stierus - 06 Мая, 2011 - 12:55:15 - перейти к сообщению
"проще реализовать рекурсивной функцией" она уже рекурсивна Улыбка

 

Powered by ExBB FM 1.0 RC1