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]   

> Описание: Помогите осознать построение массива
Saymor
Отправлено: 20 Октября, 2012 - 23:12:15
Post Id



Новичок


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


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




Здравствуйте!

в БД в одной таблице есть данные, типа:
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)

вот не могу понять, как сформировать правильный массив для вывода?
 
 Top
dubasua
Отправлено: 20 Октября, 2012 - 23:22:29
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("SELECT columns FROM table WHERE cat=1 ORDER BY type");
  3.  

(Отредактировано автором: 20 Октября, 2012 - 23:22:57)

 
 Top
Saymor
Отправлено: 20 Октября, 2012 - 23:39:34
Post Id



Новичок


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


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




[quote=dubasua][/quote]

нет, ну это не годится, так как запрос делать при каждом вхождении в массив - это не грамотно!
суть в том что я получаю
за один запрос к БД массив с данными, вот им-то и надо рулить
 
 Top
dubasua
Отправлено: 20 Октября, 2012 - 23:48:26
Post Id



Посетитель


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


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




Что нужно, выводить по очередно категории и их содержимое, или просто все упорядочнить?
 
 Top
Saymor
Отправлено: 21 Октября, 2012 - 00:00:49
Post Id



Новичок


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


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




[quote=dubasua][/quote]
надо упорядочить и вывести
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 00:06:51
Post Id



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


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


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




Saymor, слышали о nested sets?
(Добавление)
Если откажетесь от деревьев, пишите рекурсию для обхода и поиска потомков.
 
 Top
dubasua
Отправлено: 21 Октября, 2012 - 00:09:46
Post Id



Посетитель


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


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




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.  

(Отредактировано автором: 21 Октября, 2012 - 00:11:14)

 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 00:10:59
Post Id



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


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


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




dubasua, не то.
Saymor пишет:
-категория 1
--объект 1
---фото 1
---фото 2
---фото (n)
 
 Top
dubasua
Отправлено: 21 Октября, 2012 - 00:12:26
Post Id



Посетитель


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


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




DeepVarvar пишет:
dubasua, не то.
Saymor пишет:
-категория 1
--объект 1
---фото 1
---фото 2
---фото (n)


Цитата:
надо упорядочить и вывести
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 00:37:03
Post Id



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


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


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




Он имел виду кто в кого вложен - обратите внимание на дефисы в списке.
 
 Top
dubasua
Отправлено: 21 Октября, 2012 - 01:29:44
Post Id



Посетитель


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


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




Дык здесь рекурсия тогда напрашивается, или процедуру можно написать, но тож на рекурсии
 
 Top
Saymor
Отправлено: 21 Октября, 2012 - 08:41:48
Post Id



Новичок


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


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




DeepVarvar, вы правы, но!
разве рекурсия способна дать на выходе:


суть в том, что задача вывести категории и до 10 хаотично фото в них, фото от объектов.
То есть началом служит "категория", концом "фото", единственное что их связывает это объект,
который раскреплен за определенной категорией.
Фото соответственно закреплено за определенным объектом..
надеюсь понятно объяснил Ниндзя
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2012 - 09:31:59
Post Id



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


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


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




А какая разница? Почему это фотки нельзя рассматривать в качестве потомков категории?
 
 Top
Saymor
Отправлено: 21 Октября, 2012 - 09:40:18
Post Id



Новичок


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


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




DeepVarvar пишет:
А какая разница? Почему это фотки нельзя рассматривать в качестве потомков категории?

так вот как это сделать? в этом-то и вопрос
 
 Top
Saymor
Отправлено: 22 Октября, 2012 - 00:16:49
Post Id



Новичок


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


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




сел, все взвесил и сам решение нашел...

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.  

(Отредактировано автором: 22 Октября, 2012 - 00:25:31)

 
 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