|
|
|
| посоветуйте, плз, как правильно сделать следующее:
PHP.Из формы я передаю (POST) переменные для запроса, к примеру, у меня их 5.
Но при заполнении формы, некоторые поля могут быть не заполнены, в таком случае, необходимо, чтобы в запрос по данному полю включался параметр "все записи".
[переменная]='' не проходит, т.к., по идее должно быть IS NOT NULL...
немного сумбурно изложил мысли...
короче как сделать универсальный запрос?
мне на ум пока приходит только муторно проверять переменные и, в зависиости от их состояния писать, к примеру:
если [переменная] не пуста, то
"SELECT * from [таблица ] WHERE `[поле]' = '[переменная]'" иначе
"SELECT * from [таблица ] WHERE `[поле]' IS NOT NULL...
так как полей для запроса 5, то соответственно эта муть увеличивается :)
я уж не говорю про даты... как проверить валидность значения, введенного в поле формы для запроса? checkdate? Если да, то как правильно выполнить эту проверку, если в поле формы введено "wkkl 4elkj"
заранее благодарю за помощь и советы! | |
|
|
|
|
|
|
|
для: monolife
(11.12.2006 в 09:38)
| | В этом случае запрос формируют динамически
<?php
if(empty($_POST['field'])) $where[] = " field IS NOT NULL ";
else $where[] = " field = '$_POST[field]' ";
if(empty($_POST['field1'])) $where[] = " field1 IS NOT NULL ";
else $where[] = " field1 = '$_POST[field1]' ";
if(empty($_POST['field2'])) $where[] = " field2 IS NOT NULL ";
else $where[] = " field2 = '$_POST[field2]' ";
if(empty($_POST['field3'])) $where[] = " field3 IS NOT NULL ";
else $where[] = " field3 = '$_POST[field3]' ";
// ....
$query = "SELECT * from [таблица ] WHERE ".implode(" AND ", $where);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.12.2006 в 13:24)
| | беру себе на заметку, никогда так не делал
implode(" AND ", $where)
я всегда добавлял where 1=1
а до этого лепил строку с and | |
|
|
|
|
|
|
|
для: cheops
(11.12.2006 в 13:24)
| | спасибо, cheops!
попробую это на практике :) | |
|
|
|
|
|
|
|
для: monolife
(12.12.2006 в 03:15)
| | работает замечательно! :) | |
|
|
|