[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сложный запрос к базе данных(большой)
Strannik
Здравствуйте. Есть запрос к бд

if (isset($_POST["rooms"])&isset($_POST["town"])&isset($_POST["price_one"])&isset($_POST["price_to"]))
{$result = mysql_query("SELECT COUNT(*) FROM `table` WHERE `ROOMS`='".$_POST["rooms"]."' AND `TOWN`='".$_POST["town"]."' AND `COST` > '".$_POST["price_one"]."' AND`COST`<'".$_POST["price_to"]."'"); }


Это хорошо, но что делать если поступает только 1 значение $_POST ? ведь тогда чтобы рассчитать правильный запрос $result нужно будет сделать около 200 проверок if.

Вопрос можно как -то оптимизировать(сократить код) ?

поясню: чтобы не писать каждый раз такой код(ниже) для каждого параметра $_POST
if (isset($_POST["rooms"])
{
if (isset($_POST["town"])&isset($_POST["price_one"])&isset($_POST["price_to"]))
}
{
$reult.....}
else
{
if (isset($_POST["price_one"])&isset($_POST["price_to"]))
}
{
$reult.....}
else
{
if (isset($_POST["price_to"]))
}
{
$reult.....}
else
{
.................
}
}
}



а то по обычному очень долго получится....


Можно сделать уменьшение кода или нет?



Спустя 3 часа, 11 минут, 21 секунда (17.06.2011 - 07:46) linker написал(а):
Можно короче, зашить в конфиг используемые поля формы, на примере:
array(
'rooms' => 'ROOMS',
'price_on' => 'COST',
'price_to' => 'COST',
...
)
. Далее через array_keys() получить список ключей из $_POST и того что зашито в конфиге. После этого через array_intersect() получить пересечение обоих массивов с ключами. А потом дело техники. Второй вариант, использовать array_intersect_key($_POST, <массив из конфига>).
Быстрый ответ:

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