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 & MySQL [2]

 PHP.SU

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


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

> Описание: выборка из БД информации и отображение в древевидной форме
evgenijj
Отправлено: 13 Ноября, 2006 - 09:37:24
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




Maksir пишет:
Нет.. структуру БД понять не могу...

А это что, не база?! Ладно, вот еще вариант:
PHP:
скопировать код в буфер обмена
  1.  
  2. Таблица CATEGORIES:
  3.  
  4. 1;0;Извещатели охранные;1
  5. 2;0;Извещатели пожарные;2
  6. 3;0;Приборы приемно-контрольные;3
  7. 6;1;Извещатели охранные магнитоконтактные;1
  8. 7;1;Извещатели охранные электроконтактные;2
  9. 8;1;Извещатели охранные ударноконтактные;3
  10. 9;2;Извещатели пожарные тепловые;1
  11. 10;2;Извещатели пожарные дымовые;2
  12. 11;2;Извещатели пожарные комбинированные;3
  13. 17;3;Приборы приемно-контрольные охранные;1
  14. 18;3;Приборы приемно-контрольные пожарные;2
  15. 19;3;Приборы приемно-контрольные охранно-пожарные;3
  16.  
  17. Таблица PRODUCTS:
  18.  
  19. 1;6;Извещатель охранный магнитоконтактный ИО 102-2;Технические характеристики ИО 102-2;1
  20. 2;6;Извещатель охранный магнитоконтактный ИО 102-4;Технические характеристики ИО 102-4;2
  21. 3;6;Извещатель охранный магнитоконтактный ИО 102-14;Технические характеристики ИО 102-14;3
  22. 4;7;Извещатель охранный электроконтактный ИО 201-1;Технические характеристики ИО 201-1;1
  23. 5;7;Извещатель охранный электроконтактный ВПК 2112;Технические характеристики ВПК 2112;2
  24. 6;8;Извещатель охранный ударноконтактный "Окно-4";Технические характеристики "Окно-4";1
  25. 7;8;Извещатель охранный ударноконтактный "Окно-5";Технические характеристики "Окно-5";2
  26. 8;8;Извещатель охранный ударноконтактный "Окно-6";Технические характеристики "Окно-6";3
  27. 9;9;Извещатель пожарный тепловой ИП 114-01;Технические характеристики ИП 114-01;1
  28. 10;9;Извещатель пожарный тепловой ИП 101-1A;Технические характеристики ИП 101-1A;2
  29. 11;9;Извещатель пожарный тепловой ИП 101-30;Технические характеристики ИП 101-30;3
  30. 12;10;Извещатель пожарный дымовой ИП 212-3СМ;Технические характеристики ИП 212-3СМ;1
  31. 13;10;Извещатель пожарный дымовой ИП 212-18СИ;Технические характеристики ИП 212-18СИ;2
  32. 14;11;Извещатель пожарный комбинированный ИП 212/101-78-А1;Технические характеристики ИП 212/101-78-А1;1
  33. 15;11;Извещатель пожарный комбинированный ИП 212/101-18 А3R1;Технические характеристики ИП 212/101-18 А3R1;2
  34. и т.д.
  35.  
  36. Запрос на выборку корневых категорий:
  37. SELECT id_ctg, title FROM categories WHERE id_parent=0 ORDER BY sortorder;
  38. Получим записи
  39. id_ctg=1 title="Извещатели охранные"
  40. id_ctg=2 title="Извещатели пожарные"
  41. id_ctg=3 title="Приборы приемно-контрольные"
  42.  
  43. Запрос на выборку подкатегорий категории id_ctg=1 title="Извещатели охранные":
  44. SELECT id_ctg, title FROM categories WHERE id_parent=1 ORDER BY sortorder;
  45. Получим записи
  46. id_ctg=6 title="Извещатели охранные магнитоконтактные"
  47. id_ctg=7 title="Извещатели охранные электроконтактные"
  48. id_ctg=8 title="Извещатели охранные ударноконтактные"
  49.  
  50. Запрос на выборку товарных позиций категории id_ctg=6 title="Извещатели охранные магнитоконтактные":
  51. SELECT id_prd, title FROM products WHERE id_ctg=6 ORDER BY sortorder;
  52. Получим записи
  53. id_prd=1 title="Извещатель охранный магнитоконтактный ИО 102-2"
  54. id_prd=2 title="Извещатель охранный магнитоконтактный ИО 102-4"
  55. id_prd=3 title="Извещатель охранный магнитоконтактный ИО 102-14"
  56.  

 
 Top
Maksir
Отправлено: 14 Декабря, 2006 - 17:05:29
Post Id


Новичок


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


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




evgenijj пишет:
Как мало человеку для счастья нужно . Осталось сделать еще один шаг - признать тот факт, что структура БД не оптимальна.

И всё-таки, Евгений, база нормальная и оптимальная.
Всё сделано. Всё пучком. И код получился крохотным.
CODE (text):
скопировать код в буфер обмена
  1. $arr = array();
  2. while($f=mysql_fetch_array($result))
  3. {    
  4.      $_cats[] = format_text($t['category']);
  5.      $arr[] = $t;
  6.  
  7. }    
  8.  
  9. $wcat = array_pop($_cats);  
  10.  
  11. foreach ($arr as $t){
  12.    
  13.      $cat=HtmlSpecialChars($t['catg_id']);
  14.      $pcat=HtmlSpecialChars($t['catr_id']);
  15.      $id=HtmlSpecialChars($t['id']);
  16.      $marka=HtmlSpecialChars($t['marka']);
  17.      $catalog=format_text($t['catalog']);  
  18.      $category=format_text($t['category']);
  19.      $numer=format_text($t['num']);
  20.      $tis=format_text($t['text_is']);
  21.      $plot=HtmlSpecialChars($t['plot']);
  22.      $stand=format_text($t['stand']);
  23.      $form=format_text($t['form']);
  24.      $dat=my_time($t['date']);
  25.  
  26.  
  27.  
  28. if ($_category!=$category)
  29. {
  30. echo '
  31. <tr>
  32.     <td><img src="img/'.(($wcat==$category)?'2l':'2t').'.gif"></td>
  33.     <td BGCOLOR="#ffffff><div class="box">'.$category.'</div></td>
  34.    
  35.    
  36.   </tr>';
  37.  
  38. $_category=$category;
  39.      
  40. }
Вот и всё...
Мне мудрый человек сказал, что, всё-равно какая база и помог с решением этой задачи. Думаю, это заключительный пост, в этом топе, который поможет другим. Ведь, как не парадоксально, выход всё-таки есть. Даже не в базе дело, как оказалось.
 
 Top
evgenijj
Отправлено: 15 Декабря, 2006 - 19:12:58
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




Maksir пишет:
И всё-таки, Евгений, база нормальная и оптимальная.

Что тут скажешь? Не в коня корм.
 
 Top
Maksir
Отправлено: 16 Декабря, 2006 - 00:53:21
Post Id


Новичок


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


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




evgenijj пишет:
Maksir пишет:
И всё-таки, Евгений, база нормальная и оптимальная.

Что тут скажешь? Не в коня корм.

Извините Евгений, я вам очень признателен за помощь вашу, но не понимаю вашей такой реакции. Вроде, скрипт работает, нужно радоваться. А база действительно не при чём.
 
 Top
evgenijj
Отправлено: 17 Декабря, 2006 - 00:33:12
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




Должен сделать некоторое лирическое отступление. Полтора года назад я делал свой второй сайт (и первый с использованием MySQL). Я совершил ту же ошибку, что и ты. Каталог продукции имел примерно такой вид:
Цитата:

Каталог->Подкаталог->Товар

Для хранения информации о товарах/категориях я создал три таблицы в БД: catalogs, groups, goods - соответственно, для хранения информации о категориях, подкатегориях и товарах. Если бы уровень вложенности каталога был больше, то я создал бы больше таблиц. Ты сейчас идешь по тому же пути, что и я когда-то. Я пытался предостеречь других, чтобы не совершали тех же ошибок. Не стоит изобретать велосипед - универсальный каталог продукции уже давно написан. Надо всего-лишь его использовать. Пишу я это для того, чтобы кто-то (умнее меня) не наступил на эти грабли. У меня не получается учиться на чужих ошибках - учусь на своих Улыбка .
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB