powaz Posted May 16, 2007 Share Posted May 16, 2007 I do the search and i want to use checkbox'es (to check letters) and text fields (to fill information), and find information. I'm doing like this: $delete_ids = join (' and name like %', $_POST['box']); $quary="SELECT * FROM company WHERE name like '%".$name."' and surename like'%".$surename."' and companyname like '%".$delete_ids."' but then i select two symbols this form don't showing any information maybe somebody did search like this please help me... Thanx 4 your answers. Quote Link to comment https://forums.phpfreaks.com/topic/51653-need-help-with-search/ Share on other sites More sharing options...
SoulAssassin Posted May 16, 2007 Share Posted May 16, 2007 This is the way would normally do it. It's lots of code, but it work nice. Read the //Comments <?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 = "bdname" ; $username_logon = "username" ; $password_logon = "password" ; $self = $_SERVER['php_self']; //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>Please Enter Your Search Keyword! </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 yourtable WHERE first_field LIKE \"%$trimm%\" OR second_field LIKE \"%$trimm%\" OR third_field LIKE \"%$trimm%\"" ; // Execute the query to get number of rows that contain search kewords $numresults=mysql_query ($query); $row_num_links_main =mysql_num_rows ($numresults); echo "$row_num_links_main"; // 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['first_field']; }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 "<td><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>"; echo "Search results for: ". $var; echo "</strong></font></td>"; echo "<br>"; } foreach($newarr as $value) { // EDIT HERE and specify your table and field names for the SQL query $query_value = "SELECT * FROM yourtable WHERE first_field = '$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' ] //This script assumes you are searching only 3 fields. If you are searching more fileds make sure that add appropriate line. $first_field = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat['first_field'] ); $second_field = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat['second_field'] ); $third_field = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat['third_field'] ); ?> <table width="98%" border="0" align="center" > <tr> <td width="142" align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>First Field</strong></font></td> <td width="196" align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>Second Field</strong></font></td> <td width="382" align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>Third Field</strong></font></td> </tr> <? foreach($trimmed_array as $trimm){ if($trimm != 'b' ){ //IF you added more fields to search make sure to add them below as well. $first_field = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $first_field); $second_field = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $second_field); $third_field = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $third_field); } //end highlight ?> <tr> <td height="22"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $first_field ; ?></font></div></td> <td width ="196" ><font color="FA6C00" size="1" face="Verdana, Arial, Helvetica, sans-serif\"><? echo "<a href=\"view_entry.php?action=edit&id=$first_field\">" ?><?php echo $second_field; ?></a></font></td> <td><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $third_field; ?></font></div></td> </tr> </table> <br> <? } } //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='left'><a href='$PHP_SELF?s=$n&q=$var&catid=$catid'>Next " .$limit. "</a></div>"; } } //end foreach $newarr ?> Quote Link to comment https://forums.phpfreaks.com/topic/51653-need-help-with-search/#findComment-254439 Share on other sites More sharing options...
jitesh Posted May 16, 2007 Share Posted May 16, 2007 May be $delete_ids = join (' and name like '%". $_POST['box']."%'); $quary="SELECT * FROM company WHERE name like '%".$name."%' and surename like'%".$surename."%' and companyname like '%".$delete_ids."%' Quote Link to comment https://forums.phpfreaks.com/topic/51653-need-help-with-search/#findComment-254442 Share on other sites More sharing options...
powaz Posted May 16, 2007 Author Share Posted May 16, 2007 no this one wrong Quote Link to comment https://forums.phpfreaks.com/topic/51653-need-help-with-search/#findComment-254496 Share on other sites More sharing options...
SoulAssassin Posted May 16, 2007 Share Posted May 16, 2007 The one I posted definitely works, you just need to change all the relevant fields to your Database fields. Quote Link to comment https://forums.phpfreaks.com/topic/51653-need-help-with-search/#findComment-254504 Share on other sites More sharing options...
powaz Posted May 16, 2007 Author Share Posted May 16, 2007 this replay wasn't for you i know this script works Quote Link to comment https://forums.phpfreaks.com/topic/51653-need-help-with-search/#findComment-254511 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.