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(. Далее через array_keys() получить список ключей из $_POST и того что зашито в конфиге. После этого через array_intersect() получить пересечение обоих массивов с ключами. А потом дело техники. Второй вариант, использовать array_intersect_key($_POST, <массив из конфига>).
'rooms' => 'ROOMS',
'price_on' => 'COST',
'price_to' => 'COST',
...
)