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.SU

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


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

> Без описания
harlam
Отправлено: 02 Ноября, 2012 - 10:47:57
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Авг. 2009  


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




Здравствуйте,
Есть меню вида

| Главная
| каталог
--| Уаз
----| Хантер
----| Патриот
--| Ваз
--| Газ
| Форум

В базе данных выглядит вот так:

id | id_menu | name_menu
1 | 0 | Главная
2 | 0 | каталог
3 | 2 | Уаз
4 | 2 | Ваз
5 | 3 | хантер
6 | 3 | патриот
7 | 2 | Газ
8 | 0 | форум

Подскажите как грамотно составить запрос чтоб получились "хлебные крошки"?
id=6
Главная / каталог / Уаз / патриот
Уже второй день голова просто кипит Огорчён

(Отредактировано автором: 02 Ноября, 2012 - 10:51:34)

 
 Top
KingStar
Отправлено: 02 Ноября, 2012 - 11:04:03
Post Id



Участник


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


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




никак, связи абсолютно нет никакой

Главная / каталог / Уаз / патриот

1 | 0 | Главная
2 | 0 | каталог
3 | 2 | Уаз
6 | 3 | патриот

с чего я должен понять, что за чем должно идти???


-----
То что программа работает, не означает что она написана правильно!
 
 Top
dubasua
Отправлено: 02 Ноября, 2012 - 11:13:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


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




У него id_menu это id родителя. Есть два варианта - первый это рекурсия, второй это neste sets.
 
 Top
KingStar
Отправлено: 02 Ноября, 2012 - 11:15:46
Post Id



Участник


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


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




dubasua пишет:
У него id_menu это id родителя. Есть два варианта - первый это рекурсия, второй это neste sets.

ну и Хде Ше Сдесь связь???

1 | 0 | Главная
2 | 0 | каталог


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Panoptik
Отправлено: 02 Ноября, 2012 - 11:17:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




нужна рекурсивная функция

PHP:
скопировать код в буфер обмена
  1.  
  2.  //предполагается что вы уже выбрали текущую запись
  3.  $current_id = 6;
  4.  $menu_items = array();
  5.  do {
  6.    $flag = false;
  7.    $menu = mysql_query('SELECT * FROM your_table WHERE id = '.$current_id);
  8.    if(mysql_num_rows($menu)) {
  9.       $row = mysql_fetch_assoc($menu);
  10.       if($current_id = $row['id_menu']) {
  11.         $flag = true;
  12.       }
  13.       $menu_items[] =  $row['name_menu'];
  14.    }
  15.  }
  16.  while($flag);
  17.    
  18. $breadcrumbs = implode('/',array_reverse($menu_items));
  19. //echo $breadcrumbs;
  20. //успрощенная схема. вам нужно будет доработать и сформировать масси с адресами/id-шниками для ссылок
  21.  
  22.  
  23.  


-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Ноября, 2012 - 12:13:02
Post Id



Активный участник


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


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




Panoptik, зачто вы ему запросы в циклах дали? Радость
 
 Top
halsoft
Отправлено: 02 Ноября, 2012 - 12:17:55
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Нояб. 2012  
Откуда: The Land of Chechens


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




Запросы в циклах - зло, но я иногда так делаю, а именно - в таких рекурсиях )

Напишите кто-нибудь, используя пример автора, код запроса sql, в котором используются фишки mysql по рекурсии, если они есть

(Отредактировано автором: 02 Ноября, 2012 - 12:19:51)



-----
Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
 
 Top
Panoptik
Отправлено: 02 Ноября, 2012 - 12:40:37
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




DeepVarvar пишет:
Panoptik, зачто вы ему запросы в циклах дали? Радость

Какая структура такое и решение. у вас есть другой вариант не меняя структуру?


-----
Just do it
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Ноября, 2012 - 13:06:52
Post Id



Активный участник


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


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




harlam, разбейте для начало меню на 3 таблицы: sections, sub_sections и sub_sections2.

sections:
id | name

sub_sections:
id | idSections | name

sub_sections2:
id | id_sections | idSubSections | name
 
 Top
Мелкий Супермодератор
Отправлено: 02 Ноября, 2012 - 13:27:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




armancho7777777, зачем?

Если уровень вложенности известен - можно приджойнить несколько раз эту самую таблицу.
А рекурсивные запросы mysql не умеет, в отличии от того же постгреса.


-----
PostgreSQL DBA
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Ноября, 2012 - 13:42:18
Post Id



Активный участник


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


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




Мелкий пишет:
Если уровень вложенности известен - можно приджойнить несколько раз эту самую таблицу.

И то верно)
 
 Top
harlam
Отправлено: 05 Ноября, 2012 - 10:18:44
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Авг. 2009  


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




Мелкий пишет:
armancho7777777, зачем?

Если уровень вложенности известен - можно приджойнить несколько раз эту самую таблицу.
А рекурсивные запросы mysql не умеет, в отличии от того же постгреса.


Уровень вложений может изменятся, он не известен, поэтому была и выбрана такая схема базы данных.
Может кто-то "хлебные крошки" делает по своей схеме, каким-то другим способом?

(Отредактировано автором: 05 Ноября, 2012 - 10:20:29)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB