Vegard Berg
Vegard Berg

Reputation: 79

Search string with spaces

My problem is that I can't search with spaces. The search words is included in my url: http://prosjektdatabasen.com/index.php?url=search&query=fish+chips The results returns nothings. Only when I use one word.. Any suggestions?

<form action="index.php" method="GET">
             <input type="hidden" name="url" value="search" /> 
    <input type="text" name="query" class="text" placeholder="Søk etter prosjekter.." style="height:12px;"/>
    <input type="submit" value="" class="search-button" />
</form>

$query = $_GET['query']; 

$min_length = 2;


if(strlen($query) >= $min_length){ 

    $query = htmlspecialchars($query); 


    $query = mysql_real_escape_string($query);


    $raw_results = mysql_query("SELECT *, account_created FROM users
        WHERE (`username` LIKE '%".$query."%') OR (`motto` LIKE '%".$query."%')ORDER BY account_created DESC") or die(mysql_error());
     $num_rows = mysql_num_rows($raw_results);

Upvotes: 2

Views: 350

Answers (2)

Murtaza Khursheed Hussain
Murtaza Khursheed Hussain

Reputation: 15336

This is the URL encoding and decoding problem, space and other special characters will be converted to safe equivalent.

You need to decode url

<?php
    $varr = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($url)); 
    $varr = html_entity_decode($url,null,'UTF-8');
?>

Update

$query = $_GET['query'];
echo utf8_decode(urldecode( $query));

Input:

$query = "fish+chips";

Output:

fish chips

Upvotes: 0

hamed
hamed

Reputation: 8033

Try this:

$queries = explode("+", $_GET['query']);
  $raw_results = mysql_query("SELECT *, account_created FROM users
    WHERE (`username` LIKE '%".$queries[0] ."%') OR (`username` LIKE '%".$queries[1] ."%') OR (`motto` LIKE '%".$queries[0]."%') OR (`motto` LIKE '%".$queries[1]."%') ORDER BY account_created DESC") or die(mysql_error());

Upvotes: 1

Related Questions