Jump to content

need help with search


powaz

Recommended Posts

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.

 

Link to comment
https://forums.phpfreaks.com/topic/51653-need-help-with-search/
Share on other sites

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
?>

Link to comment
https://forums.phpfreaks.com/topic/51653-need-help-with-search/#findComment-254439
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.