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]   

> Описание: Не могу написать запрос к базе MySQL.
romanz
Отправлено: 13 Октября, 2009 - 13:26:01
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2009  


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




Добрый вторник.
Столкнулся со следующей проблемой.
Есть база данных сотовых телефонов.
Для навигации по базе используем форму выбора параметров:
Стандарт,
Производитель,
Тип модели,
Модель.
Теперь не могу понять как написать SELECT.
Пользователь может выбрать один параметр, а может выбрать и все параметры.
Спасибо большое.
 
 Top
Champion Супермодератор
Отправлено: 13 Октября, 2009 - 13:37:16
Post Id



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


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


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




сформировать условие where, используя слово OR
 
 Top
romanz
Отправлено: 13 Октября, 2009 - 13:41:40
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2009  


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




SELECT model From catalog Where class = $class OR factory=$factory OR use=$use
OR model=$model
Правильно понял?
 
 Top
Платинум
Отправлено: 13 Октября, 2009 - 13:46:03
Post Id



Частый гость


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


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




Тока так:

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.  

(Отредактировано автором: 13 Октября, 2009 - 13:48:47)

 
My status
 Top
romanz
Отправлено: 13 Октября, 2009 - 14:53:35
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2009  


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




Спасибо большое.
Попробую уточнить условия запроса.
Фильтрация нужна по всем выбранным параметрам.
Если пользователь выбирает все параметры - Стандарт, Производитель,Тип модели,Модель.
Запрос выглядит следующим образом:
<?PHP
mysql_query('SELECT model FROM `catalog` WHERE class = '.$class.' AND factory='.$factory.' AND use='.$use.' AND model='.$mode.'');
?>
Если пользователь выбирает 1,2, 3 параметра, тогда мой SELECT выдает ошибку.
Нужно динамически менять SELECT в зависимости от выбранных параметров.
А как это сделать не представляю.
 
 Top
Платинум
Отправлено: 13 Октября, 2009 - 15:06:14
Post Id



Частый гость


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


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




Я бы сделал так:
 
My status
 Top
romanz
Отправлено: 15 Октября, 2009 - 09:43:48
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2009  


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




Спасибо за рекомендации.
Решение моей проблемы:
<?
/* Проверяем наличие параметров фильтрации базы */
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');
?>
Есть альтернативные методы?
 
 Top
Платинум
Отправлено: 15 Октября, 2009 - 12:19:15
Post Id



Частый гость


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


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




Варианты думаю еше есть, нода только МОЗГИ подключить. =)
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB