www.webdeveloper.com
Results 1 to 3 of 3

Thread: Search with multiply words

  1. #1
    Join Date
    Oct 2013
    Posts
    28

    Search with multiply words

    I'm about to update my search script. The search engine searches in my database where I ask it to search. What is new is I want do some search words, that the users can check in a checkbox, if he wants to use the word in the search.

    As for now my search engine works, the only problem is that it only searches the last word and not all of the checked words. My formula looks like this:

    HTML Code:
    <form method="POST" action="<?=$_SERVER["PHP_SELF"]?>"> 
    <p>Search for: 
    </p> 
    Books: <input type="checkbox" name='search' value="books"> 
    Movies: <input type="checkbox" name='search' value="movies"> 
    Outdoor: <input type="checkbox" name='search' value="outdoor"> 
    Indore: <input type="checkbox" name='search' value="indore"> 
    </p> 
    <p><input type='submit'  value='Search'></p> 
    </form>
    The php code looks like:
    PHP Code:
    <?php 
    if(isset($_POST['search'])) 

      
    $connx mysql_connect('localhost''*******'',*********') or die("connx"); 
      
    $db mysql_select_db('*********') or die(mysql_error()); 
      
      
    # convert to upper case, trim it, and replace spaces with "|": 
      
    $search mysql_real_escape_string($search); 
      
    $search strtoupper(preg_replace('/\s+/''|', ($_POST['search']))); 
      
      
    # create a MySQL REGEXP for the search: 
      
    $regexp "REGEXP '[[:<:]]($search)[[:>:]]'"
      
    $query "SELECT * FROM `keywords` WHERE UPPER(`keywords01`) $regexp OR "
               
    "`keywords02` $regexp OR "
               
    "`keywords03` $regexp OR "
               
    "`keywords04` $regexp"
      
      
    $result mysql_query($query) or die($query " - " mysql_error()); 
      
    echo 
    "<table>\n"
    while(
    $row mysql_fetch_assoc($result)) 


        echo 
    "<tr>"
        echo 
    "<td><img src=../{$row['type']}/{$row['folder']}/{$row['date']}-{$row['num']}/{$row['thumbimage']} border=1></td>";
        echo 
    "<td>{$row['name']}</td>"
        echo 
    "<td>{$row['date']}</td>"
        echo 
    "<td><a href=../view.php?id={$row['id']} target=blank>VIEW</a></td>"
        echo 
    "</tr>\n"
      }  

     else {
      echo 
    "<p>Sorry, no results matched your search.</p>";
    }
    ?>
    Are there someone, who can figure out, why it is only the last marked checkboxs word that are searched and not all marked words and how do I get it to search for all marked words?

    Hope someone can help.

  2. #2
    Join Date
    Sep 2013
    Posts
    221
    Well, change your input names to use array syntax like:
    type="checkbox" name='search[]'

    then $_POST['search'] will be an array.

    If it's an array, you would just need to implode:

    $search = implode( '|', $_POST['search'] );

    Hope this helps.
    strad solutionswww.stradsolutions.com

  3. #3
    Join Date
    Nov 2013
    Posts
    6
    If you want to use array, you must use [], so change your checkbox input name to "search[]"

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles