|
|
|
| Давненько не писал на php, вот появилась такая производственная необходимость :)
Скрипту передаются ($_GET) 4 параметра,
$smp, $control, $start, $end,
ниодин их необязателен.
Нужно составить SQL запрос, придумал такой "костыль" на первое время, но хочется более изящного решения
$first = true;
if ($action == "search")
{
$sql = "SELECT * FROM register WHERE ";
if (!empty($smp))
{
$sql .= "smp = \"".$smp."\" ";
$first = false;
}
if (!empty($control))
{
if (!$first) $sql .=" and ";
$sql .= "control = \"".$control."\"";
$first = false;
}
if (!empty($start))
{
if (!$first) $sql .=" and ";
$sql .= "start < \"".$start."\"";
$first = false;
}
if (!empty($end))
{
if (!$first) $sql .=" and ";
$sql .= "end > \"".$end."\"";
$first = false;
}
$sql .= " ORDER by `smp`;";
} | |
|
|
|
|
|
|
|
для: Trunk
(01.08.2010 в 20:01)
| | Ну хоть бы в бб "code" оформили
Предлагаю примерно такое (предполагается, что переменные существуют, пусть даже пустой строкой, и обработаны для защиты от sql-inj.
<?php
if (!empty($param))
$sql[] = $param;
if (!empty($param_two))
$sql[] = $param_two;
...
$sql = isset($sql) ? implode(' AND ', $sql) : null;
$query = "SELECT ... WHERE 1 $sql";
|
| |
|
|
|
|
|
|
|
для: neadekvat
(01.08.2010 в 20:53)
| | Большое спасибо!
Как-то не пришел в голову такой красивый ход!
ps: про бб совсем забыл, каюсь, давно не был на форуме | |
|
|
|
|
|
|
|
для: neadekvat
(01.08.2010 в 20:53)
| | Проще тогда массив GET сразу обработать. | |
|
|
|
|
|
|
|
для: sim5
(01.08.2010 в 22:44)
| | Вы хотели сказать, суперглобальный массив с исходными данными :)
Да, так, пожалуй, будет лучше, дабы не плодить переменных и уменьшить кол-во строк | |
|
|
|
|
|
|
|
для: neadekvat
(01.08.2010 в 22:55)
| | А кто его знает, может и о суперлокалном GET. А что, есть такой? ;-) | |
|
|
|
|
|
|
|
для: sim5
(01.08.2010 в 23:25)
| | Не, просто данные могут приходить и через POST и другие средства :) | |
|
|
|
|
|
|
|
для: neadekvat
(01.08.2010 в 23:33)
| | Автор: ....Скрипту передаются ($_GET) 4 параметра | |
|
|
|