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

Форум PHP

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

 

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

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

тема: рекурсия + список
 
 автор: kireyev   (24.06.2010 в 15:18)   письмо автору
 
 

Есть рекурсивная функция, вызывающая из БД древовидное меню:
<?php
$db_link 
mysql_connect("localhost""root""");
if (!
$db_link) {
   die(
"Could not connect: " mysql_error());
}
mysql_select_db("kupivufe") or die("Could not select database");

function 
tree($pid$lvl){
    
$query mysql_query("SELECT * FROM menu WHERE pid = '$pid'") or die(mysql_error());
    while(
$categ mysql_fetch_object($query)){
       
$lvl++;
       echo 
$categ->title;
       echo 
"<br>\n";
       
tree($categ->id$lvl--);
    } 
}
tree(00);
mysql_close($db_link);
?>


Как правильно расставить <ul><li></li></ul> ?
Чтобы получилось
1. Раздел
1.1 Подраздел
1.1.1 Товар
1.1.2 Товар
1.2 Подраздел
2. Раздел

и т.д...

  Ответить  
 
 автор: sl1p   (24.06.2010 в 15:53)   письмо автору
 
   для: kireyev   (24.06.2010 в 15:18)
 

<?php 
$db_link 
mysql_connect("localhost""root"""); 
if (!
$db_link) { 
   die(
"Could not connect: " mysql_error()); 

mysql_select_db("kupivufe") or die("Could not select database"); 

function 
tree($pid$lvl){ 
    
$query mysql_query("SELECT * FROM menu WHERE pid = '$pid'") or die(mysql_error()); 
    if(
$query && mysql_num_rows($query)) {
        echo 
'<ul>'
        
while($categ mysql_fetch_object($query)){ 
           
$lvl++; 
           echo 
"<li>{$categ->title}</li>"
           
tree($categ->id$lvl--); 
        }
        echo 
'</ul>'
    
}

tree(00); 
mysql_close($db_link); 
?>

  Ответить  
 
 автор: sim5   (24.06.2010 в 16:02)   письмо автору
 
   для: sl1p   (24.06.2010 в 15:53)
 

А разве не так:

<ul>
 <li>1. Раздел</li>
  <ul>
   <li>1.1 Подраздел</li>
    <ul>
     <li>1.1.1 Товар</li>
     <li>1.1.2 Товар</li>
    </ul>
   <li>1.2 Подраздел</li>
  </ul>
 <li>2. Раздел</li>
</ul>

  Ответить  
 
 автор: sl1p   (24.06.2010 в 16:38)   письмо автору
 
   для: sim5   (24.06.2010 в 16:02)
 

не логично:)

  Ответить  
 
 автор: sim5   (24.06.2010 в 16:39)   письмо автору
 
   для: sl1p   (24.06.2010 в 16:38)
 

Да? Для меню значит логичнее одно вложение?

  Ответить  
 
 автор: sl1p   (24.06.2010 в 16:40)   письмо автору
 
   для: sim5   (24.06.2010 в 16:39)
 

а где же там одно вложение?:)

  Ответить  
 
 автор: sim5   (24.06.2010 в 16:41)   письмо автору
 
   для: sl1p   (24.06.2010 в 16:40)
 

У вас его вообще не получится никакого.

  Ответить  
 
 автор: Лена   (24.06.2010 в 16:44)   письмо автору
 
   для: sl1p   (24.06.2010 в 15:53)
 

Не там <li> закрыли.

  Ответить  
 
 автор: sl1p   (24.06.2010 в 17:12)   письмо автору
 
   для: Лена   (24.06.2010 в 16:44)
 

а точно)

<?php  
$db_link 
mysql_connect("localhost""root""");  
if (!
$db_link) {  
   die(
"Could not connect: " mysql_error());  
}  
mysql_select_db("kupivufe") or die("Could not select database");  

function 
tree($pid$lvl){  
    
$query mysql_query("SELECT * FROM menu WHERE pid = '$pid'") or die(mysql_error());  
    if(
$query && mysql_num_rows($query)) { 
        echo 
'<ul>' 
        
while($categ mysql_fetch_object($query)){  
           
$lvl++;  
           echo 
'<li>';
           echo 
$categ->title;  
           
tree($categ->id$lvl--);
           echo 
'</li>';
        } 
        echo 
'</ul>' 
    

}  
tree(00);  
mysql_close($db_link);  
?>

  Ответить  
 
 автор: kireyev   (24.06.2010 в 20:29)   письмо автору
 
   для: sl1p   (24.06.2010 в 17:12)
 

Скажите, а как сделать, чтобы не было много обращений в БД?
Можно сделать одно обращение к БД?

  Ответить  
 
 автор: Trianon   (24.06.2010 в 21:03)   письмо автору
 
   для: kireyev   (24.06.2010 в 20:29)
 

нужно

  Ответить  
 
 автор: kireyev   (24.06.2010 в 21:13)   письмо автору
 
   для: Trianon   (24.06.2010 в 21:03)
 

можно подробнее, спасибо!!

  Ответить  
 
 автор: sl1p   (24.06.2010 в 21:31)   письмо автору
 
   для: kireyev   (24.06.2010 в 21:13)
 

и мне :)

  Ответить  
 
 автор: Дмитрий Смаль   (25.06.2010 в 13:41)   письмо автору
 
   для: kireyev   (24.06.2010 в 20:29)
 

http://www.google.com.ua/search?&q=%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5+%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0

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

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