Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: передача переменных-параметров в запрос
 
 автор: monolife   (11.12.2006 в 09:38)   письмо автору
 
 

посоветуйте, плз, как правильно сделать следующее:
PHP.Из формы я передаю (POST) переменные для запроса, к примеру, у меня их 5.
Но при заполнении формы, некоторые поля могут быть не заполнены, в таком случае, необходимо, чтобы в запрос по данному полю включался параметр "все записи".
[переменная]='' не проходит, т.к., по идее должно быть IS NOT NULL...
немного сумбурно изложил мысли...
короче как сделать универсальный запрос?
мне на ум пока приходит только муторно проверять переменные и, в зависиости от их состояния писать, к примеру:
если [переменная] не пуста, то
"SELECT * from [таблица ] WHERE `[поле]' = '[переменная]'" иначе
"SELECT * from [таблица ] WHERE `[поле]' IS NOT NULL...


так как полей для запроса 5, то соответственно эта муть увеличивается :)
я уж не говорю про даты... как проверить валидность значения, введенного в поле формы для запроса? checkdate? Если да, то как правильно выполнить эту проверку, если в поле формы введено "wkkl 4elkj"
заранее благодарю за помощь и советы!

   
 
 автор: cheops   (11.12.2006 в 13:24)   письмо автору
 
   для: 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);
?>

   
 
 автор: himic   (11.12.2006 в 14:13)   письмо автору
 
   для: cheops   (11.12.2006 в 13:24)
 

беру себе на заметку, никогда так не делал
implode(" AND ", $where)

я всегда добавлял where 1=1
а до этого лепил строку с and

   
 
 автор: monolife   (12.12.2006 в 03:15)   письмо автору
 
   для: cheops   (11.12.2006 в 13:24)
 

спасибо, cheops!
попробую это на практике :)

   
 
 автор: monolife   (12.12.2006 в 08:29)   письмо автору
 
   для: monolife   (12.12.2006 в 03:15)
 

работает замечательно! :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования