Оптимизация кода

FedY@

Новичок
Оптимизация кода

Подсажите пожалуйсто, может кому - то (професионалу) покажеться глупым, но для этого и есть этот форум что нужно спрашивать! Вот код:
PHP:
if($rooms!='Выберите'){
        if($add==true){
                $sql.=" AND rooms='".$rooms."'";
                }else{
        $sql="SELECT * FROM flat_sail WHERE rooms='".$rooms."'";
        $add=true;
}
}
if($type!='Выберите'){
        if($add==true){
                $sql.=" AND type='".$type."'";
                }else{
        $sql="SELECT * FROM flat_sail WHERE type='".$type."'";
        $add=true;
}
}
if($etag!=''){
        if($add==true){
                $sql.=" AND etag='".$etag."'";
                }else{
        $sql="SELECT * FROM flat_sail WHERE etag='".$etag."'";
        $add=true;
}
}
Что нужно зделать чтобы этот код был немного меньше, я пробывал через функцию - не получилось!:(
 

Макс

Старожил PHPClub
PHP:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $sql = 'SELECT * FROM flat_sail';
   $params = array();
   if ($name) $params[] = "name = '".$name."'";
   if ($type != 'Выберите') $params = "type = '".$type."'";
   if ($etag) $params[] = "etag = '".$etag."'";
   ........
   if (sizeof($params)) 
      $sql .= " WHERE ".implode(" AND ", $params);
}
если у тебя отключен magic_quotes_gpc то будет дыра
И код здесь нечистый (много нотайсов может быть)
Если вместо значений "Выберите" будешь передавать пустое значение, то можно еще упростить :
PHP:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $fields = array('rooms','name','type','etag');
   $sql = 'SELECT * FROM flat_sail';
   $params = array();
   foreach ($fields as $f ) {
        if ($_POST[$f]) $params[] = " $f ='".$_POST[$f]."'";
   }
   if (sizeof($params)) 
      $sql .= " WHERE ".implode(" AND ", $params);
}
 

neko

tеam neko
Location: Ukraine, Boyarka

у них там что, радиационный фон повышен чтоли....
 

FedY@

Новичок
обьясни что такое sizeof(); ?

-~{}~ 06.06.04 16:55:

Автор оригинала: neko
Location: Ukraine, Boyarka

у них там что, радиационный фон повышен чтоли....
ТЫ на УКРАИНУ, и на её города не гони, ты понял?
 

FedY@

Новичок
можно вопрос не по теме, чтобы не создавать топик,
как зделать запрос, чтобы из базы данных выводилось например записи за посл. 10 дней, есть столбец date DATE; ( 2004-06-06).
 

IBSN

Новичок
Автор оригинала: FedY@
можно вопрос не по теме, чтобы не создавать топик,
как зделать запрос, чтобы из базы данных выводилось например записи за посл. 10 дней, есть столбец date DATE; ( 2004-06-06).
DATE_SUB(date ,INTERVAL expr interval)
 

neko

tеam neko
- Слушай, девочка, приниси весь мешок, я тебе их сразу наколю.
- Ты, что, думаешь на помойке орехи мешками валяются?!
 

FedY@

Новичок
извени не успел, за 30 сек. добавить сообщение(добавлял в других топиках):
сейчас сам тоже немного помудохаюсь

-~{}~ 06.06.04 18:41:

SELECT * FROM flat_sail WHERE DATE_SUB(DATE, INTERVAL 2 DAY)

какая тут ошибка ? выводит все... не смотря на интервал!
 

FedY@

Новичок
нет, просто с этой темы перешел на ту... потому что тут ничего не отвечали!
 
Сверху