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 :: Версия для печати :: Вывести значения из таблицы циклом, сортируя по нужному полю [2]
Форумы портала PHP.SU » » Вопросы новичков » Вывести значения из таблицы циклом, сортируя по нужному полю

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

16. Heavenanvil - 08 Февраля, 2017 - 15:40:29 - перейти к сообщению
andrewkard, практически идеально.

Единственное, что мне нужно выводить не id_cat, а name_cat.

Для категорий у меня изменить получилось:

PHP:
скопировать код в буфер обмена
  1. foreach($rows as $row){
  2.     if(empty($row['parent'])){
  3.         $data[$row['id_cat']] = array();
  4.     }
  5. }
  6. foreach($rows as $row){
  7.     if(isset($data[$row['parent']])){
  8.     //было $data[$row['parent']][] = $row['id_cat'];
  9.            $data[$row['parent']][] = $row['name_cat'];
  10.     }
  11. }

А вот для родительских разделов, такой фокус не работает :(
17. andrewkard - 08 Февраля, 2017 - 16:38:43 - перейти к сообщению
Увеличьте размерность массива $data[$row['id_cat']] , добавьте ключи name и items
18. Heavenanvil - 08 Февраля, 2017 - 16:58:57 - перейти к сообщению
Извините? ))

Я правильно понял, что нужно изменить строку:


Пока не разобрался, как добавлять ключи в массив, но почему name и items, когда нужно name_cat?
19. andrewkard - 08 Февраля, 2017 - 17:02:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($rows as $row){
  3.             if(empty($row['parent'])){
  4.                 $data[$row['id_cat']] = array(
  5.                     'name' => $row['name_cat'],
  6.                     'items' => array(),
  7.                 );
  8.             }
  9.         }
  10.         foreach($rows as $row){
  11.             if(isset($data[$row['parent']])){
  12.                 $data[$row['parent']]['items'][] = $row['name_cat'];
  13.             }
  14.         }
  15.  

(Добавление)
и далее тоже нужно будет подправить, думаю уже разберетесь.
20. Heavenanvil - 08 Февраля, 2017 - 17:22:28 - перейти к сообщению
Да, что же это ((
Трудно быть тупым. ЧСВ падает с каждым вашим постом ))

Подскажите пожалуйста, что ещё нужно менять?
21. andrewkard - 08 Февраля, 2017 - 17:28:23 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($rows as $row){
  3.     if(empty($row['parent'])){
  4.         $data[$row['id_cat']] = array(
  5.             'name' => '',
  6.             'items' => array(),
  7.         );
  8.     }
  9. }
  10. foreach($rows as $row){
  11.     if(isset($data[$row['parent']])){
  12.         $data[$row['parent']]['items'][] = $row['name_cat'];
  13.     }
  14. }
  15. ?>
  16. <ul class="1">
  17.         <?PHP foreach($data as $main){?>
  18.             <li>
  19.                 <div class="2"><?=$main['name']?></div>
  20.                 <div class="3">
  21.                     <?PHP foreach($main['items'] as $category){?>
  22.                         <a href="#" class="4">Категория <?=$category?></a>
  23.                     <?PHP } ?>
  24.                 </div>
  25.             </li>
  26.         <?PHP } ?>
  27.     </ul>
  28.  
  29.  
22. Heavenanvil - 08 Февраля, 2017 - 17:33:46 - перейти к сообщению
andrewkard, слава тебе господи. Всё получилось.

Признаюсь, товарищи стыдно. Всё приготовили, разжевали и ещё в рот положили.

Учиться, учиться и ещё раз учиться.

Спасибо.
23. haveFun - 09 Февраля, 2017 - 09:39:34 - перейти к сообщению
у вас абсолютно неправильная организация в бд.
не храните в одной таблице категории и разделы. разнесите их по разным таблицам.
24. Heavenanvil - 09 Февраля, 2017 - 09:43:20 - перейти к сообщению
haveFun, что конкретно мне даст раздельное хранение категорий и разделов?
Более простой запрос в коде, вероятно.
25. haveFun - 09 Февраля, 2017 - 10:31:41 - перейти к сообщению
как понять что? это две разные сущности.
разные сущности нужно хранить в разных таблицах. всегда.
делаете два селекта, два форича, и вуаля. все прозрачно и очевидно.
26. Heavenanvil - 09 Февраля, 2017 - 10:37:02 - перейти к сообщению
haveFun, спасибо. Учту.

 

Powered by ExBB FM 1.0 RC1