Поиск в базе

Discussion in 'PHP' started by fire64, 12 Oct 2013.

  1. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    Товарищи. помогите разобраться, поиск работает очень странно. часть запросы не выдают результиат, остальные выдают частично.

    PHP:
        if( isset( $_POST['q'] ) || isset( $_GET['q'] ) )
        {
            
    $q '';

            if( isset( 
    $_POST['q'] ) )
            {
                
    $q $_POST['q'];
            }
            else if( isset( 
    $_GET['q'] ) )
            {
                
    $q $_GET['q'];        
            }

            
    $q xssfilter$q );
            
    $q1 'SELECT * FROM pr_webcams WHERE status = 1 AND \'camname\' LIKE \'%'.str_replace(' ''%\' OR camname LIKE \'%'$q). '%\' OR descr LIKE \'%'.str_replace(' ''%\' OR descr LIKE \'%'$q). '%\' ORDER BY date DESC LIMIT '.$lmin.', '.$perpage.'';
            
    $res1 $db->query$q1 );
    camname - название камеры
    descr - описание

    т.е. поиск должен быть по обоим полям.
    Как быть с регистром?
     
  2. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Просто более-менее читабельно оформлю, прежде чем кто-то возмется это хотя бы прочитать.
    PHP:
    if( isset( $_POST['q'] ) || isset( $_GET['q'] ) ) 
        { 
            
    $q ''

            if( isset( 
    $_POST['q'] ) ) 
            { 
                
    $q $_POST['q']; 
            } 
            else if( isset( 
    $_GET['q'] ) ) 
            { 
                
    $q $_GET['q'];         
            } 

            
    $q xssfilter$q ); 
            
    $q1 "SELECT * FROM pr_webcams WHERE " .
    "status = 1 AND 'camname' LIKE '%" 
    str_replace(' '"%' OR camname LIKE '%"$q) . 
    "%' OR descr LIKE '%" .
    str_replace(' '"%' OR descr LIKE '%"$q) . 
    "%' ORDER BY date DESC LIMIT " $lmin ', ' $perpage ''
            
    $res1 $db->query$q1 );