[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: поиск по категориям mysql
kronter
Всем привет. Хочу сделать на сайте поиск объявлений по категориям(все категории-это столбцы в одной таблице razm_avto). Я делаю так:

$model=$_POST['model'];
$god=$_POST['god'];
$query = "SELECT * FROM `razm_avto` WHERE `model`='$model' && `god`='$god'";
$res = mysql_query($query);
...ниже идет отображение объявлений...

Все работает только если выбрать категории в двух окнах. Если вместо && поставить or, то работает только с одной категорией. А нужно сделать, чтобы пользователь мог выбрать или одну категорию, или две, но чтобы все работало.
Если что-то непонятно объяснил, сообщите. Спасибо
rooor
Цитата
Если вместо && поставить or

&& - это AND
мне кажется со структурой что-то не то...
Игорь_Vasinsky
1. данные отправляемые в БД обрабатывайте с mysq_real_escape_string()
2. что мешает поставить select в форму поиска и передавать AND или OR - принимать и подставлять в запрос?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
rooor
или я что-то не понял... или в таблице razm_avto должен быть id категории, тогда можно использовать WHERE ... IN()
... WHERE `category_id` IN(1,2,3) AND `model`='$model' && `god`='$god'

где 1,2,3 - id выбранных категорий
kronter
Цитата (rooor @ 29.04.2013 - 13:23)
или я что-то не понял... или в таблице razm_avto должен быть id категории, тогда можно использовать WHERE ... IN()
... WHERE `category_id` IN(1,2,3) AND `model`='$model' && `god`='$god'

где 1,2,3 - id выбранных категорий

Все равно в этом случае можно осуществить отбор только если выбрать все категории. А мне нужно, чтобы можно было выбрать только одну, а остальные не выбирать, и подбор все равно бы работал.
kronter
Цитата (Игорь_Vasinsky @ 29.04.2013 - 13:20)
1. данные отправляемые в БД обрабатывайте с mysq_real_escape_string()
2. что мешает поставить select в форму поиска и передавать AND или OR - принимать и подставлять в запрос?

Так она у меня и так по форме поиска работает. Проблема в том, чтобы можно было использовать одновременно или AND или OR
Игорь_Vasinsky
делай с UNION 2й SQL запрос

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
kronter
спасибо. сейчас попробую
kronter
блин ничего не получается. Подскажите как это прописать. Уже третий день голову ломаю
Игорь_Vasinsky
да можно и неделю ломать, а потом всё бросить

https://www.google.ru/webhp?hl=ru&tab=ww#ne...iw=1920&bih=912

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
andrey888
kronter

Сделай проще.
У тебя приходят две переменные и ты не знаешь где и что пришло
$model=$_POST['model'];
$god=$_POST['god'];

тогда делаем
$var=($model=='' || $god=='') ? 'OR' : 'AND' ;

и вставляем эту переменную в запрос на то место где будет OR или AND.
- это как пример. можно сделать и по другому.. но суть я думаю ты понял.

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.