Поиск в базе

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 );