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

Форум PHP

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

 

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

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

тема: Рекурсивный вывод
 
 автор: jaroslav   (20.10.2009 в 16:05)   письмо автору
 
 

Здравствуйте.

Есть пример рекурсивного вывода (взят из одной ранее обсуждаемых тем...)
Подскажите, пожалуйста, можно ли сделать так, чтобы элементы с parent=0 - сортировались в порядке убывания (id например), а все остальные - как обычно? Т.е чтобы последние добавленные темы были на 1-м месте...


Структура таблицы такая:


CREATE TABLE `table` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`parent` INT( 10 ) NOT NULL ,
`name` VARCHAR( 255 ) NOT NULL );


Корневые разделы будут иметь parent=0
Подраздел добавляется к любому разделу путем присвоения столбцу parent подраздела значения id родительского раздела.

Затем все это можно выбрать в массив:



<?php

$output 
= array();
$result mysql_query("SELECT * FROM `table`");
while(
$row mysql_fetch_assoc($result))
 {
  
$i $row['id'];
  
$p $row['parent'];
  
$output[$p][$i] = $row['name'];
 }
?>



И вывести:


<?php
build_tree
($output0);
 
 function 
build_tree($arr$root$prefix='--')
  {
   foreach(
$arr[$root] as $key=>$value)
    {
     echo 
$prefix.$value.'<br>';
     if(isset(
$arr[$key])) build_tree($arr$key$prefix.'--');
    }
  }
?> 

  Ответить  
 
 автор: cheops   (20.10.2009 в 19:02)   письмо автору
 
   для: jaroslav   (20.10.2009 в 16:05)
 

Хм... прото отсортируйте все подмассивы $output[$p] при помощи функции ksort(), а если $p == 0, то при помощи krsort().

  Ответить  
 
 автор: Jaroslav   (20.10.2009 в 23:07)   письмо автору
 
   для: cheops   (20.10.2009 в 19:02)
 

Спасибо. А код можете привести, а то это "просто" - у меня всю ночь займёт :)))

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

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