[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск с несколькими параметрами
Xakep
День добрый.

Есть поиск по базе с несколькими параметрами типа:


<form action="/search.php">
Возраст: <input type="text" name="age"><br>
Город: <input type="text" name="city"><br>
Рост: <input type="text" name="h"><br>
Вес: <input type="text" name="m"><br>
и т.д.


если сделать такой запрос:

$sql = mysql_query("SELECT * FROM `ankets` WHERE `age`='{$_GET['age']}' AND `city`='{$_GET['city']}' AND `h`='{$_GET['h']}' AND `m`='{$_GET['m']}'");


то он будет работать правильно только в том случае если все поля поиска были заполнены...а как сделать если одно или несколько полей не были заполнены? Ведь в таком случае он будет искать пустые значения...
inpost
составь условие WHERE заранее ещё до этой строчки, пользуйся if-else и дописывай в общую переменную варианты.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Xakep
например?
я пробовал делать с помощью if/else но это очень много вариантов получаеться
inpost
if(!empty($var)) {
$where .= "AND `key` = '".mysql_real_escape_string($var)."'"
}
...


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Xakep
ой..чет я до этого не догадался )) спасибо )
sergeiss
Лучше по-другому сделать. Записать все условия в массив, и потом на его основе составить окончательное условие.
$where=array();
if( .... )
{
$where[]=' conditon_1 ';
}
if( ..... )
{
$where[]=' condition_2 ';
}
....
// в итоге получаем
$final_where=implode( ' AND ', $where);

При таком подходе тебе не важно, сколько параметров уже было использовано до текущего параметра и сколько их вообще. И ты можешь спокойно добавлять/убавлять условия. На алгоритме это никак не отразится.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Xakep
хорошо, буду иметь ввиду...спасибо )
Быстрый ответ:

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