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 » SQL и Архитектура БД » Динамический запрос к базе.

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

1. romanz - 13 Октября, 2009 - 13:26:01 - перейти к сообщению
Добрый вторник.
Столкнулся со следующей проблемой.
Есть база данных сотовых телефонов.
Для навигации по базе используем форму выбора параметров:
Стандарт,
Производитель,
Тип модели,
Модель.
Теперь не могу понять как написать SELECT.
Пользователь может выбрать один параметр, а может выбрать и все параметры.
Спасибо большое.
2. Champion - 13 Октября, 2009 - 13:37:16 - перейти к сообщению
сформировать условие where, используя слово OR
3. romanz - 13 Октября, 2009 - 13:41:40 - перейти к сообщению
SELECT model From catalog Where class = $class OR factory=$factory OR use=$use
OR model=$model
Правильно понял?
4. Платинум - 13 Октября, 2009 - 13:46:03 - перейти к сообщению
Тока так:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. mysql_query('SELECT model FROM `catalog` WHERE class = '.$class.' OR factory='.$factory.' OR use='.$use.'
  4. OR model='.$mode.'');
  5.  
  6.  
  7. ?>
  8.  
5. romanz - 13 Октября, 2009 - 14:53:35 - перейти к сообщению
Спасибо большое.
Попробую уточнить условия запроса.
Фильтрация нужна по всем выбранным параметрам.
Если пользователь выбирает все параметры - Стандарт, Производитель,Тип модели,Модель.
Запрос выглядит следующим образом:
<?PHP
mysql_query('SELECT model FROM `catalog` WHERE class = '.$class.' AND factory='.$factory.' AND use='.$use.' AND model='.$mode.'');
?>
Если пользователь выбирает 1,2, 3 параметра, тогда мой SELECT выдает ошибку.
Нужно динамически менять SELECT в зависимости от выбранных параметров.
А как это сделать не представляю.
6. Платинум - 13 Октября, 2009 - 15:06:14 - перейти к сообщению
Я бы сделал так:
7. romanz - 15 Октября, 2009 - 09:43:48 - перейти к сообщению
Спасибо за рекомендации.
Решение моей проблемы:
<?
/* Проверяем наличие параметров фильтрации базы */
if ($class!=0){$suse = "AND class_id='.$class.'";}
if ($factory!=0) {$sfactory = "AND factory_id='.$factory.'";}
if ($use!=0) {$sclass = "AND usu_id='.$use.'";}
if ($model!=0) {$smodel = "AND model='.$model.'";}

/* составляем динамический запрос */

$user = mysql_query('SELECT model FROM `catalog` WHERE 1 = 1 $sclass $sfactory $suse $smodel');
?>
Есть альтернативные методы?
8. Платинум - 15 Октября, 2009 - 12:19:15 - перейти к сообщению
Варианты думаю еше есть, нода только МОЗГИ подключить. =)

 

Powered by ExBB FM 1.0 RC1