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]   

> Без описания
jonston
Отправлено: 25 Июля, 2013 - 21:02:05
Post Id



Посетитель


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


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




Здравствуйте, ребята.Вот такой вопрос.
Есть массив
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => 1
  6.             [1] => 2
  7.             [2] => 3
  8.         )
  9.     [1] => Array
  10.         (
  11.             [0] => 4
  12.             [1] => 5
  13.         )
  14.     [2] => Array
  15.         (
  16.             [0] => 6
  17.             [1] => 7
  18.         )
  19.     [3] => Array
  20.         (
  21.             [0] => 8
  22.         )
  23. )
  24.  


Нужно сформировать из него вот такую часть запроса.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. WHERE (a.attribute_id = 1
  3. AND (a.attribute_id = 4 OR a.attribute_id = 5)
  4. AND (a.attribute_id = 6 OR a.attribute_id = 7)
  5. AND (a.attribute_id = 4 OR a.attribute_id = 5)
  6. AND (a.attribute_id = 8))
  7. OR (a.attribute_id = 2
  8. AND (a.attribute_id = 4 OR a.attribute_id = 5)
  9. AND (a.attribute_id = 6 OR a.attribute_id = 7)
  10. AND (a.attribute_id = 4 OR a.attribute_id = 5)
  11. AND (a.attribute_id = 8))
  12. OR (a.attribute_id = 3
  13. AND (a.attribute_id = 4 OR a.attribute_id = 5)
  14. AND (a.attribute_id = 6 OR a.attribute_id = 7)
  15. AND (a.attribute_id = 4 OR a.attribute_id = 5)
  16. AND (a.attribute_id = 8)) ;
  17.  

Объясняю структуру.Массив - это связка двух таблиц группы сущностей и сущностей отношением one to many.Как правильно обработать массив?Заранее благодарен.
Также нужно учесть что массив может быть разным может быть вообще даже пустым.

(Отредактировано автором: 25 Июля, 2013 - 21:04:25)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 25 Июля, 2013 - 21:08:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




jonston пишет:
(a.attribute_id = 1
AND (a.attribute_id = 4 OR a.attribute_id = 5)
AND (a.attribute_id = 6 OR a.attribute_id = 7)
AND (a.attribute_id = 4 OR a.attribute_id = 5)
AND (a.attribute_id = 8))

Что это за условие? Первое выражение утверждает, что a.attribute_id должен быть равен 1, поэтому остальные никогда не выполнятся, как результат - пустое множество строк. Уверен, в логике есть ошибка (массив преобразовать к такому виду - не проблема, но нет смысла при такой постановке задачи)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 25 Июля, 2013 - 21:42:09
Post Id



Посетитель


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


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




EuGen пишет:
массив преобразовать к такому виду - не проблема, но нет смысла при такой постановке задачи


4 таблицы prcts , prcts_attrs, attrs, grp_attrs.Связи думаю поймешь какие.Есть массив который я показал выше.Нужно выбрать продукты с учетом фильтров как здесь
rozetka[dot]com[dot]ua/ru/products/procategory/102/sor/p191r164/index.html
или здесь.
www[dot]novatek[dot]com[dot]ua/
допустим есть 3 группы атрибутов разрешение, диагональ и тип подсветки у каждой есть по несколько параметров (атрибуты) диагональ 11'', 12'', 13''... разрешение 1920X1080, 1366X769... и так далее.Вот если выбраны чекбоксы 11 и 12 диагональ и 1366X769, то получается что нужно выбрать все товары с диагоналями 11 и 12 но при этом что бы каждый имел разрешение 1366X769.Как выбирать?Возможно структура атрибутов не совсем корректна, но это условие cms не моя прихоть.


Отредактировано администратором: EuGen, 25 Июля, 2013 - 22:24:31


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 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