[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбор из MySQL по нескольким параметрам
Gansik
Ребят, есть форма вида:

<form action="index.php" method="post">
Производитель
<select style="width: 200px" name="brand">
<option
value="">Всі</option>
<option
value="Michelin">Michelin</option>
<option
value="Nokian">Nokian</option>
</select><br />

Размер
<select style="width: 100px" name="size">
<option
value="">Все</option>
<option
value="150">150</option>
<option
value="155">155</option>
</select>
<select
style="width: 100px" name="size2">
<option
value="">Все</option>
<option
value="55">55</option>
<option
value="66">60</option>
</select><br />

Радиус
<select style="width: 100px" name="radius">
<option
value="">Все</option>
<option
value="13">13</option>
<option
value="17">17</option>

</select>
<br /><input
type="submit" value="ok">
</form>

Далее не могу разобраться как правильно написать обработчик, если б нужно было обязательно выбрать все параметры из списков, труда не составило б

$result = mysql_query ("SELECT * FROM  `products` WHERE `brand` = '$brand' AND `size` = $size' AND `size2` = '$size2' и т.д.

Но мне нужно, чтоб можно было выбрать из базы по-одному, или нескольким параметрам, например по производителю, или по размеру и радиусу.

ведь использовать типа:

 if(!empty($brand)){
$result = mysql_query ("SELECT * FROM `products` WHERE `brand` = '$brand' ");
}elseif(!empty($size)){
и т.д.
}

Совсем не разумно. Помогите пожалуйста



Спустя 1 час, 17 минут, 8 секунд (24.11.2011 - 02:59) Bezdna написал(а):
Цитата (Gansik @ 24.11.2011 - 01:42)
$result = mysql_query ("SELECT * FROM `products` WHERE `brand` = '$brand' AND `size` = $size' AND `size2` = '$size2'


А чем эта выборка не устраивает?

Спустя 1 час, 52 минуты, 45 секунд (24.11.2011 - 04:52) hookman написал(а):

$where = array();
if(!empty($brand)) { $where[] = "`brand` = '" . mysql_real_escape_string($brand) . "'"; }
if(!empty($size)) { $where[] = "`size` = '" . mysql_real_escape_string($size) . "'"; }
if(!empty($size2)) { $where[] = "`size2` = '" . mysql_real_escape_string($size2) . "'"; }
$result = mysql_query("SELECT * FROM `products`" . (!empty($where) ? " WHERE " . implode(' AND ', $where) : ""));

Спустя 5 часов, 58 минут, 29 секунд (24.11.2011 - 10:50) Gansik написал(а):
hookman
да, спасибо вроде работает. Остался еще один вопрос. Как правильно еще добавить в запрос условие? вида:
WHERE  `categoryID` = '187'

а то я тут чет запутался в синтаксисе.

Спустя 17 минут, 25 секунд (24.11.2011 - 11:08) Placido написал(а):
AND WHERE  `categoryID` = '187'

Спустя 16 минут, 51 секунда (24.11.2011 - 11:25) hookman написал(а):
Цитата (Gansik @ 24.11.2011 - 07:50)
hookman
да, спасибо вроде работает. Остался еще один вопрос. Как правильно еще добавить в запрос условие? вида:
WHERE  `categoryID` = '187'

а то я тут чет запутался в синтаксисе.

Вас запутал синтаксис тернарного оператора, верно? Почитайте :)

Если условие должно присутствовать постоянно, то можно так:

$where = array("`categoryID` = '" . mysql_real_escape_string($categoryID) . "'");
if(!empty($brand)) { $where[] = "`brand` = '" . mysql_real_escape_string($brand) . "'"; }
if(!empty($size)) { $where[] = "`size` = '" . mysql_real_escape_string($size) . "'"; }
if(!empty($size2)) { $where[] = "`size2` = '" . mysql_real_escape_string($size2) . "'"; }
$result = mysql_result("SELECT * FROM `products`" . (!empty($where) ? " WHERE " . implode(' AND ', $where) : ""));


Если так же как и предыдущие то так:

$where = array();
if(!empty($brand)) { $where[] = "`brand` = '" . mysql_real_escape_string($brand) . "'"; }
if(!empty($size)) { $where[] = "`size` = '" . mysql_real_escape_string($size) . "'"; }
if(!empty($size2)) { $where[] = "`size2` = '" . mysql_real_escape_string($size2) . "'"; }
if(!empty($categoryID)) { $where[] = "`categoryID` = '" . mysql_real_escape_string($categoryID) . "'"; }
$result = mysql_result("SELECT * FROM `products`" . (!empty($where) ? " WHERE " . implode(' AND ', $where) : ""));

Спустя 16 минут, 13 секунд (24.11.2011 - 11:41) Gansik написал(а):
hookman
вот спасибо добрый человек. smile.gif
Хороший форум, хорошие люди.
Все работает cool.gif

Спустя 3 минуты, 59 секунд (24.11.2011 - 11:45) Игорь_Vasinsky написал(а):
Цитата
"`size` = '" . mysql_real_escape_string($size) . "'"


тут int???

достаточно

"`size` = " . (int)$size . "

Спустя 8 минут, 20 секунд (24.11.2011 - 11:53) Gansik написал(а):
Игорь_Vasinsky
да для меня это не особо важно, у меня там своя проверка идет, после получение переменных из формы
Быстрый ответ:

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