crazy8 Posted May 9, 2007 Share Posted May 9, 2007 Ok I have this search script I have been working on but I have a few issues I have noticed and not sure how to fix them. Here are my issues When page first loads it already displays Search Error We don't seem to have a search parameter! Now if I still decide to do a search anyway, then I get this Search results for: example bakery Any ideas why this is and how to fix it? Thank you all for the help and keep up the great work. <?php //This is a working script //Make sure to go through it and edit database table filelds that you are seraching //This script assumes you are searching 3 fields $hostname_logon = "localhost" ; $database_logon = "hotspot" ; $username_logon = "root" ; $password_logon = "" ; //open database connection $connections = mysql_connect($hostname_logon, $username_logon, $password_logon) or die ( "Unabale to connect to the database" ); //select database mysql_select_db($database_logon) or die ( "Unable to select database!" ); //specify how many results to display per page $limit = 10; // Get the search variable from URL $var = $_GET['q']; //trim whitespace from the stored variable $trimmed = trim($var); //separate key-phrases into keywords $trimmed_array = explode(" ",$trimmed); // check for an empty string and display a message. if ($trimmed == "") { $resultmsg = "<p>Search Error</p><p>Please enter a search...</p>" ; } // check for a search parameter if (!isset($var)){ $resultmsg = "<p>Search Error</p><p>We don't seem to have a search parameter! </p>" ; } // Build SQL Query for each keyword entered foreach ($trimmed_array as $trimm){ // EDIT HERE and specify your table and field names for the SQL query $query = "SELECT * FROM restaurants WHERE place LIKE \"%$trimm%\" OR address LIKE \"%$trimm%\" OR city LIKE \"%$trimm%\" OR zip LIKE \"%$trimm%\" OR areacode LIKE \"%$trimm%\" OR phone LIKE \"%$trimm%\" OR keywords LIKE \"%$trimm%\" ORDER BY place DESC" ; // Execute the query to get number of rows that contain search kewords $numresults=mysql_query ($query); $row_num_links_main =mysql_num_rows ($numresults); // next determine if 's' has been passed to script, if not use 0. // 's' is a variable that gets set as we navigate the search result pages. if (empty($s)) { $s=0; } // now let's get results. $query .= " LIMIT $s,$limit" ; $numresults = mysql_query ($query) or die ( "Couldn't execute query" ); $row= mysql_fetch_array ($numresults); //store record id of every item that contains the keyword in the array we need to do this to avoid display of duplicate search result. do{ //EDIT HERE and specify your field name that is primary key $adid_array[] = $row[ 'id' ]; }while( $row= mysql_fetch_array($numresults)); } //end foreach if($row_num_links_main == 0 && $row_set_num == 0){ $resultmsg = "<p>Search results for:" . $trimmed ."</p><p>Sorry, your search returned zero results</p>" ; } //delete duplicate record id's from the array. To do this we will use array_unique function $tmparr = array_unique($adid_array); $i=0; foreach ($tmparr as $v) { $newarr[$i] = $v; $i++; } // now you can display the results returned. But first we will display the search form on the top of the page ?> <form action="search.php" method="get" name="search"> <div align="center"> <input name="q" type="text" value=" <?php echo $q; ?> " size="15"> <input name="search" type="submit" value="Search"> </div> </form> <?php // display what the person searched for. if( isset ($resultmsg)){ echo $resultmsg; exit(); }else{ echo "Search results for: " . $var; } foreach($newarr as $value){ // EDIT HERE and specify your table and field names for the SQL query $query_value = "SELECT * FROM restaurants WHERE place = '$value'"; $num_value=mysql_query ($query_value); //$row_linkcat= mysql_fetch_array ($num_value); //$row_num_links= mysql_num_rows ($num_value); //now let's make the keywods bold. To do that we will use preg_replace function. //EDIT parts of the lines below that have fields names like $row_linkcat[ 'field1' ] //If you are searching more fileds make sure that add appropriate line. $place = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'place' ] ); $placeaddress = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'address' ] ); $placecity = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'city' ] ); $placezip = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'zip' ] ); $placeareacode = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'areacode' ] ); $placephoe = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'phone' ] ); $placekeywords = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'keywords' ] ); foreach($trimmed_array as $trimm){ if($trimm != 'b' ){ //IF you added more fields to search make sure to add them below as well. $place = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $place); $placeaddress = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $placeaddress); $placecity = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $placecity); $placezip = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $placezip); $placeareacode = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $placeareacode); $placephone = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $placephone); $placekeywords = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $placekeywords); } //end highlight ?> <p> <?php echo $place; ?><br> <?php echo $placeaddress; ?><br> <?php echo $placecity; ?><br> <?php echo $placezip; ?><br> <?php echo $placeareacode; ?><br> <?php echo $placephone; ?><br> <?php echo $placekeywords; ?> </p> <?php } //end foreach $trimmed_array if($row_num_links_main > $limit){ // next we need to do the links to other search result pages if ($s>=1) { // do not display previous link if 's' is '0' $prevs=($s-$limit); echo "<div align='left'><a href='$PHP_SELF?s=$prevs&q=$var&catid=$catid'>Previous " .$limit. "</a></div>"; } // check to see if last page $slimit =$s+$limit; if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) { // not last page so display next link $n=$s+$limit; echo "<div align='right'><a href='$PHP_SELF?s=$n&q=$var&catid=$catid'>Next " .$limit. "</a></div>"; } } } //end foreach $newarr ?> Link to comment https://forums.phpfreaks.com/topic/50714-search-script-bug/ Share on other sites More sharing options...
crazy8 Posted May 10, 2007 Author Share Posted May 10, 2007 Any ideas on this at all? Link to comment https://forums.phpfreaks.com/topic/50714-search-script-bug/#findComment-249510 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.