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

Форум MySQL

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

 

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

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

тема: Очень нужна помощь по сортировке.
 
 автор: DIM@   (01.05.2008 в 01:39)   письмо автору
 
 

Доброй ночи труженники клавиатуры и мыша,

У меня сложилось следующая ситуация, есть таблица в которой хранится информация в древовидной форме

CREATE TABLE IF NOT EXISTS `bbk` (
  `bbkid` int(9) NOT NULL auto_increment,
  `bbkidParent` int(9) default NULL,
  `bbkName` char(250) default NULL,
  PRIMARY KEY  (`bbkid`)
);


по началу все было замечательно, я делал запрос к таблице и строил дерево

SELECT * FROM bbk ORDER BY bbkidParent, bbkNum asc


но теперь простая сортировака по полю `bbkidParent` не дает должного результата, начали появлятся ошибки да и пропадать категории, все из за того что,

bbkid | bbkidParent  |  bbkName  
1           0                        Общенаучное и междисциплин... 
2           0                        Естественные науки 
14         0                       Сельское хозяйство 
24         0                       Общественные и гуманитарны... 
48         0                       Литература универсального ... 
3           2                       Естественные науки в целом 
7           2                       Химические науки 
8           2                       Науки о Земле (геодезически... 
6           2                       Биологические науки 
5           7                       Органическая химия 
13        12                     Книжное дело. Книговедение 
22        14                     Ветеринария 
18        17                     Музыка и зрелищные искусст�... 
20        0                       История. Исторические наук�... 
15        20                     Экономика. Экономические н�... 
16        20                     Культура. Культурология 
12        20                     Средства массовой информац... 


иногда родитель (`bbkid`) появляется позже, чем дочерняя ветка (`bbkidParent`), может есть какой нибудь способ решить эту проблему используя какой нибудь сложный метод сортировки или запрос?

Очень нужно, дерево приходится использовать часто и везде применяю именно такой метод хранения

   
 
 автор: Axxil   (01.05.2008 в 10:17)   письмо автору
 
   для: DIM@   (01.05.2008 в 01:39)
 

А как вы само дерево строите? Покажите код.

   
 
 автор: DIM@   (01.05.2008 в 13:46)   письмо автору
 
   для: Axxil   (01.05.2008 в 10:17)
 

Вот код построения дерева

<?
$sql 
"SELECT * FROM bbk ORDER BY bbkidParent, bbkNum asc";
$result SQLQueryVS($sql);
if(
$result && mysql_num_rows($result)>0){
  while(
$row=mysql_fetch_array($result)) {
    
$id=$row['bbkid'];
    
$idParent=$row['bbkidParent'];
    
$Name=$row['bbkName'];
    
$objTree.= $tree->returnshow();
    
$objTree.= "</td></tr></table>";
    
$tree->AddNode($idParent$id$Nametrue);
   }
}
?>


есть объект дерево, функция AddNode() добавляет его ветвь, но проблема в том, что дочерняя ветка (`bbkidParent`) появляется раньше, чем родитель (`bbkid`)

   
Rambler's Top100
вверх

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