Hi everyone. I have a search page that works great if I just search one word or words that are together.... ie. "The brown dog jumps" search for brown and it works, search for brown dog and it works, try searching for brown jumps and it cant find it.
So does anyone have any ideas of how I could modify this code to work better or suggest a pre built boolean search code that is as easy as this for me to mess about with the way the results are displayed.
Any help would be great. And im sure the code isnt as clean as it could be
Thanks in advance
Lee
<?php
// Get the search variable from URL
$var = @$_GET['q'] ;
$trimmed = trim($var); //trim whitespace from the stored variable
// how many results to return before offering next page ie 1 of 2 pages
$limit=10;
// check for an empty string and display a message.
if ($trimmed == "")
{
echo "<p><font size=2 face=Arial, Helvetica, sans-serif><strong><font color=000000>Please enter a search...</strong></font></p><p>";
exit;
}
// check for a search parameter
if (!isset($var))
{
echo "<p><font size=2 face=Arial, Helvetica, sans-serif><strong><font color=000000>We dont seem to have a search parameter!</strong></font></p><p>";
exit;
}
//connect to your database ** EDIT REQUIRED HERE **
mysql_connect("XXXX","XXXXX","XXXXXX"); //(host, username, password)
//specify database ** EDIT REQUIRED HERE **
mysql_select_db("XXXXX") or die("Unable to select database"); //select which database we're using
// Build SQL Query
$query = "select * from gzvenues where gzvenues.searcher like '%$trimmed%'";
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
// If we have no results
if ($numrows == 0)
{
// echo "<h4>Results</h4>";
echo "<p><font size=2 face=Arial, Helvetica, sans-serif><strong><font color=000000>Sorry, your search "" . $trimmed . "" returned zero results</strong></font></p>";
// next determine if s has been passed to script, if not use 0
if (empty($s)) {
$s=0;
}
// get results
$query .= " limit $s,$limit";
$result = mysql_query($query) or die("Couldn't execute query");
// display what the person searched for
echo "<font size=2 face=Arial, Helvetica, sans-serif><font color=FF0099><p>You searched for "" . $var . ""</font></font></p><p>";
// begin to show results set
$count = 1 + $s ;
// now you can display the results returned
while ($row= mysql_fetch_array($result)) {
$id = $row["id"];
$ident = $row["ident"];
$name = $row["name"];
$city = $row["city"];
$postcode = $row["postcode"];
$url = $row["url"];
$info = $row["info"];
echo "<font color=000000 size=2 face=Arial, Helvetica, sans-serif><strong>$name</strong><font size=1> ($id)</font></font><br>
<font color=000000 size=1 face=Arial, Helvetica, sans-serif><strong>$city</strong><br><font color=666666>$info</font></font><br>" ;
if ($url == "")
{
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=FF0099>no website listed</font>"; $count++ ;
}
else
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=FF0099><a href=\"http://$url\" target=blank>$url</a></font>"; $count++ ;
if ($postcode == "")
{
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=FF0099> | no map available</font>"; $count++ ;
}
else
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=FF0099> | <a href=\"http://multimap.com/map/browse.cgi?client=public&db=pc&addr1=&client=public&addr2=&advanced=&addr3=&pc=$postcode&quicksearch=$postcode&cidr_client=none\" target=blank>view map</a></font>"; $count++ ;
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=FF0099> | <a href=\"v_moreinfo.php?q=$name\" target=_self>more information</a></font><p>"; $count++ ;
}
$currPage = (($s/$limit) + 0);
//break before paging - below adds the next and prev links
echo "<br />";
// next we need to do the links to other results
if ($s>=1) { // bypass PREV link if s is 0
$prevs=($s-$limit);
print "<font size=1 face=Arial, Helvetica, sans-serif><font color=6558a5> <a href=\"$PHP_SELF?s=$prevs&q=$var\"><<
Prev 10</a>  </font>";
}
// calculate number of pages needing links
$pages=intval($numrows/$limit);
// $pages now contains int of pages needed unless there is a remainder from division
if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}
// check to see if last page
if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
// not last page so give NEXT link
$news=$s+$limit;
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=6558a5> <a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 >></font></a>";
}
$a = $s + ($limit) ;
if ($a > $numrows) { $a = $numrows ; }
$b = $s + 0 ;
echo "<font size=1 face=Arial, Helvetica, sans-serif><font color=000000><p>Showing results $b to $a of $numrows</font></p>";
?>
:o