Reputation: 79
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
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
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