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
Форумы портала PHP.SU :: Версия для печати :: прошу помощи
Форумы портала PHP.SU » PHP » Регулярные выражения » прошу помощи

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

1. Alexs84 - 10 Августа, 2017 - 12:56:11 - перейти к сообщению
есть таблица меню menu с даными, например:

id = '1','2','3','4','5','6'
name = 'меню 1','меню 2','под меню 3',' под меню 4','меню 5','под меню 6'
id_parent = '0','0','1,2','1,2','5','6'

есть такой запрос

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id, name, id_parent FROM menu
  2. WHERE id_parent = $id_menu


вопрос можно ли так вообще сравнивать, если в поле id_parent значение "1,2"?

как мне вывести нужный список разделов меню если подменю могут относится к двум разделам одновременно, например "под меню 4" может быть в "меню 1" и в "меню 2"

Зарание благодарен
2. rgl - 10 Августа, 2017 - 13:57:38 - перейти к сообщению
Может, попробовать так?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id, name, id_parent FROM menu
  2. WHERE id_parent RLIKE '[[:<:]]$id_menu[[:>:]]'
3. Vladimir Kheifets - 11 Августа, 2017 - 08:36:36 - перейти к сообщению
Alexs84 пишет:
есть таблица меню menu с даными, например:

id = '1','2','3','4','5','6'
name = 'меню 1','меню 2','под меню 3',' под меню 4','меню 5','под меню 6'
id_parent = '0','0','1,2','1,2','5','6'

есть такой запрос

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id, name, id_parent FROM menu
  2. WHERE id_parent = $id_menu


вопрос можно ли так вообще сравнивать, если в поле id_parent значение "1,2"?

как мне вывести нужный список разделов меню если подменю могут относится к двум разделам одновременно, например "под меню 4" может быть в "меню 1" и в "меню 2"
Зарание благодарен

Доброе утро!

1.Так как Вы написали WHERE id_parent = $id_menu сравнивать нельзя т.к. поле id_parent текстовое. Можно записать WHERE id_parent ='$id_menu' [/b] или использовать REGEXP или LIKE

2.Уточните, пожалуйста, Вам в результате нужно получить такое меню:
CODE (html):
скопировать код в буфер обмена
  1. <ol>
  2.    <li>меню 1
  3.       <ul>
  4.          <li>под меню 4</li>
  5.          <li>............</li>
  6.       </ul>
  7.    </li>
  8.    <li>меню 2
  9.       <ul>
  10.          <li>под меню 4</li>
  11.          <li>............</li>
  12.       </ul>
  13.    </li>
  14.     <li>меню 5</li>
  15.     <li>меню 6</li>  
  16. </ol>


3. Может быть вместо:
id_parent = '0','0','1,2','1,2','5','6'
сделать так:
id_parent = '1','2','1,1','2,1','5','6'
4. Alexs84 - 11 Августа, 2017 - 10:14:43 - перейти к сообщению
Большое всем спасибо, помог способ rgl

CODE (SQL):
скопировать код в буфер обмена
  1.     SELECT id, name, id_parent FROM menu
  2.     WHERE id_parent RLIKE '[[:<:]]$id_menu[[:>:]]'

 

Powered by ExBB FM 1.0 RC1