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. Saymor - 20 Октября, 2012 - 23:12:15 - перейти к сообщению
Здравствуйте!

в БД в одной таблице есть данные, типа:
type="category",
type="object",
type="img"

понятно, что у записей уникальные id и категорий много так же как объектов и фото.
связь между ними осуществляется по полю "cat", например (цветом выделил связи, для простоты восприятия):
Категория 1 - 'id'=1, 'cat'=0;
объект 1 - 'id'=9, 'cat'=1;
объект 2 - 'id'=10, 'cat'=1;
картинка 1 - 'id'=19, 'cat'=9;
картинка 2 - 'id'=20, 'cat'=9;
картинка 3 - 'id'=22, 'cat'=9;
картинка 1 - 'id'=22, 'cat'=10;

суть в том, что надо вывести данные в виде:
-категория 1
--объект 1
---фото 1
---фото 2
---фото (n)

вот не могу понять, как сформировать правильный массив для вывода?
2. dubasua - 20 Октября, 2012 - 23:22:29 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("SELECT columns FROM table WHERE cat=1 ORDER BY type");
  3.  
3. Saymor - 20 Октября, 2012 - 23:39:34 - перейти к сообщению
[quote=dubasua][/quote]

нет, ну это не годится, так как запрос делать при каждом вхождении в массив - это не грамотно!
суть в том что я получаю
за один запрос к БД массив с данными, вот им-то и надо рулить
4. dubasua - 20 Октября, 2012 - 23:48:26 - перейти к сообщению
Что нужно, выводить по очередно категории и их содержимое, или просто все упорядочнить?
5. Saymor - 21 Октября, 2012 - 00:00:49 - перейти к сообщению
[quote=dubasua][/quote]
надо упорядочить и вывести
6. DeepVarvar - 21 Октября, 2012 - 00:06:51 - перейти к сообщению
Saymor, слышали о nested sets?
(Добавление)
Если откажетесь от деревьев, пишите рекурсию для обхода и поиска потомков.
7. dubasua - 21 Октября, 2012 - 00:09:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = mysql_query("SELECT columns FROM table ORDER BY type,id,cat");
  3. $result = mysql_fetch_assoc($query);
  4. do{
  5.  
  6. //здесь выводите строки
  7.  
  8. }
  9. while($result = mysql_fetch_assoc($query));
  10.  
  11.  
  12.  
  13.  
  14.  
8. DeepVarvar - 21 Октября, 2012 - 00:10:59 - перейти к сообщению
dubasua, не то.
Saymor пишет:
-категория 1
--объект 1
---фото 1
---фото 2
---фото (n)
9. dubasua - 21 Октября, 2012 - 00:12:26 - перейти к сообщению
DeepVarvar пишет:
dubasua, не то.
Saymor пишет:
-категория 1
--объект 1
---фото 1
---фото 2
---фото (n)


Цитата:
надо упорядочить и вывести
10. DeepVarvar - 21 Октября, 2012 - 00:37:03 - перейти к сообщению
Он имел виду кто в кого вложен - обратите внимание на дефисы в списке.
11. dubasua - 21 Октября, 2012 - 01:29:44 - перейти к сообщению
Дык здесь рекурсия тогда напрашивается, или процедуру можно написать, но тож на рекурсии
12. Saymor - 21 Октября, 2012 - 08:41:48 - перейти к сообщению
DeepVarvar, вы правы, но!
разве рекурсия способна дать на выходе:


суть в том, что задача вывести категории и до 10 хаотично фото в них, фото от объектов.
То есть началом служит "категория", концом "фото", единственное что их связывает это объект,
который раскреплен за определенной категорией.
Фото соответственно закреплено за определенным объектом..
надеюсь понятно объяснил Ниндзя
13. DeepVarvar - 21 Октября, 2012 - 09:31:59 - перейти к сообщению
А какая разница? Почему это фотки нельзя рассматривать в качестве потомков категории?
14. Saymor - 21 Октября, 2012 - 09:40:18 - перейти к сообщению
DeepVarvar пишет:
А какая разница? Почему это фотки нельзя рассматривать в качестве потомков категории?

так вот как это сделать? в этом-то и вопрос
15. Saymor - 22 Октября, 2012 - 00:16:49 - перейти к сообщению
сел, все взвесил и сам решение нашел...

PHP:
скопировать код в буфер обмена
  1.  
  2. for($i=0,$n=count($JD_ARRAY_params['obj_category_array']); $i<$n; $i++){
  3.  $cat_ID = $JD_ARRAY_params['obj_category_array'][$i]->id;
  4.        
  5.   for($i2=0,$n2=count($JD_ARRAY_params['obj_objects_array'][$cat_ID]); $i2<$n2; $i2++){
  6.     $obj_ID = $JD_ARRAY_params['obj_objects_array'][$cat_ID][$i2]->id;
  7.                    
  8.       for($i3=0,$n3=count($JD_ARRAY_params['obj_img'][$obj_ID]); $i3<$n3; $i3++){
  9.         $img_ID = $JD_ARRAY_params['obj_img'][$obj_ID][$i3]->id;
  10. // Итог, что и требовалось получить
  11. $JD_ARRAY_params['sravnenie'][$cat_ID][] = $JD_ARRAY_params['obj_img'][$obj_ID][$i3];
  12.                     }
  13.         }
  14. }  
  15.  

 

Powered by ExBB FM 1.0 RC1