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 » » Вопросы новичков » Массивы и цыклы

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

1. lnocommentl - 01 Августа, 2012 - 20:44:17 - перейти к сообщению
Такая задача. Есть 2 массива, и есть цыкл
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.        
  3.         $parent = array(1 =>'Menu', 2 => 'Menu_2', 3 => 'Menu_3') ;
  4.         $sub = array(1 => 'Sub_menu', 2 =>'sub_menu2') ;
  5.        
  6.         foreach($parent as $key => $value){
  7.             echo "<a href = \"?id={$key}\">{$value}</a><br /> " ;
  8.         }
  9. ?>
  10.  


Помогите пожалуйста доделать цыкл что бы при нажатии на Mune под ним появлялось Sub_menu. Не могу придумать как это сделать...
2. LIME - 01 Августа, 2012 - 20:50:23 - перейти к сообщению
в цЫкле пишете для каждого пункта меню сразу и подменю
но с стилем display:none
а в файле стилей пишете отображение по наведению
вот
3. lnocommentl - 01 Августа, 2012 - 20:58:38 - перейти к сообщению
я извиняюсь а как в цикле писать и для под меню ?Улыбка
понять немогу...я делаю вот так
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. foreach($parent as $key => $value){
  4.             echo "<a href = \"?id={$key}\">{$value}</a><br /> " ;
  5.             if($_GET['id']){
  6.                            foreach($sub as $key => $value){
  7.             echo "$value " ;
  8. }
  9. }
  10.         }
  11.  


и он мне 3 раза выводит то что в масиве находится...
4. LIME - 01 Августа, 2012 - 21:00:49 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach($parent as $key => $value){
  2.             echo "<a href = \"?id={$key}\">{$value}</a><br /> " ;
  3.             if($_GET['id']){
  4.                          
  5.             echo $sub[$key] ;
  6.  
  7. }
  8.         }
5. lnocommentl - 01 Августа, 2012 - 21:09:57 - перейти к сообщению
Прости еще за один вопрос) а если 1 значению родителя принадлежит 2 или более дочерних менюшек?
6. LIME - 01 Августа, 2012 - 21:12:53 - перейти к сообщению
и как это выглядеть по твоему будет)))
наводим на пункт и во все стороны все раскрывается?)))
аа...понял
делай элементы подменю вложенными массивами
и пробегай по ним
7. lnocommentl - 01 Августа, 2012 - 21:17:58 - перейти к сообщению
У меня просто такая штука. есть 2 таблицы, с горем по палам сделал что бы с таблицы 1 где лежит id и menu (родители) выводилось меню, а вторая таблица дочерняя, при нажатии на родителя что бы выводились дочерний... вот на этом и застрял...нажимаю на ссылку а он выводит под каждый ссылкой по 3 раза одно и тоже...уже трое суток сижу над этим меню)
8. DelphinPRO - 01 Августа, 2012 - 21:23:30 - перейти к сообщению
Эх, хотел написать как правильно организовывать в БД и выводить на страницу многоуровневое меню с помощью рекурсии, но, во-первых, чую, вопросов будет еще больше, во-вторых, уже писал, можно посмотреть в списке моих ответов.
9. LIME - 01 Августа, 2012 - 21:25:05 - перейти к сообщению
рекурсии - зло ))
хотя тут они маленькие...но это уже на подсознании))
10. DelphinPRO - 01 Августа, 2012 - 21:29:59 - перейти к сообщению
рекурсия - иногда единственный выход )

А если тебе заранее неизвестен уровень вложенности меню?
11. LIME - 01 Августа, 2012 - 21:31:06 - перейти к сообщению
DelphinPRO цикл запросов по дочерним рядам бд))
пока не пропадут оные))
12. DelphinPRO - 01 Августа, 2012 - 21:38:24 - перейти к сообщению
ну эт еще большее извращение чем рекурсия Улыбка
13. LIME - 01 Августа, 2012 - 21:40:34 - перейти к сообщению
почему?
разве в рекурсии не совершаются запросы к бд
пс: наверное всетки надо прочитать твой пост об этом))
пока все на уровне догадок))
14. DelphinPRO - 01 Августа, 2012 - 21:47:30 - перейти к сообщению
там все просто

имеем таблицу

ID_menu | ID_menuitem | ID_parent | title

ID_menu - это на случай, если требуется хранить несколько разных менюшек

одним запросом выдергиваем все элементы для конкретного меню

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM menu WHERE ID_menu = 1

потом на стороне php строим дерево по ID_menuitem и ID_parent
и рекусией выводим это дерево в виде вложенных списков.

Только, боюсь, автору топика нужно будет подробнее разжевывать Недовольство, огорчение
15. LIME - 01 Августа, 2012 - 21:50:16 - перейти к сообщению
аа...ну ясн
но всеравно в большинстве случаев можно рекурсию в цикл переделать
взгляни на реализацию
возможно я прав?

 

Powered by ExBB FM 1.0 RC1