Jump to content

Multiple Search Parameter


ChrisScicluna

Recommended Posts

Hi all i have a problem but i know its not difficult to solve but i cannot get to it  ??? . I have a mysql database with a table called conferences and in this table there are 5 fields which are conference_name, type_conference, location, conference_url and conference_date. Now i have a search implemented in html which has the following fields, conference type , location, month/year:

 

What i want to achieve is that the user can either fill one fields and get results according to that field or else fill all the fields and get a more restricted search. Is this possible? Here is the html:

 

//------------------- html -------------------------//

 

<form action="searchresults.php" method="get" name="search">

  <div align="center">

    <p> <input name="q" type="text" value=" <?php echo $q; ?> " size="15"> </p>

  <p> <input name="q" type="text" value=" <?php echo $r; ?> " size="15"> </p>

  <p> <input name="q" type="text" value=" <?php echo $s; ?> " size="15"> </p>

      <input name="search" type="submit" value="Search">

  </div>

</form>

 

 

//--------------------html -----------------------//

 

 

and here is the php that is processing the form can you tell me how i can order it to get the final result thanks :)

 

//--------------------php/mysql-----------------//

 

<?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 = "***" ; 

$database_logon = "***" ; 

$username_logon = "***" ; 

$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 conference WHERE conference_name LIKE \"%$trimm%\" OR type_conference LIKE  \"%$trimm%\" OR location LIKE \"%$trimm%\" ORDER BY id  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

?>

 

 

 

<?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 conference WHERE id = '$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.

  $titlehigh = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'conference_name' ] );

  $linkhigh = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'location' ] );

  $linkdesc = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'type_conference' ] );

 

foreach($trimmed_array as $trimm){

    if($trimm != 'b' ){

//IF you added more fields to search make sure to add them below as well.

        $titlehigh = preg_replace( "'($trimm)'si" ,  "<b>\\1</b>" , $titlehigh);

        $linkhigh = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $linkhigh);

        $linkdesc = preg_replace( "'($trimm)'si" ,  "<b>\\1</b>" , $linkdesc);

    }

//end highlight

 

?>

<p>

<?php echo $titlehigh; ?><br>

<?php echo $linkhigh; ?><br>

<?php echo $linkhigh; ?>

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

?>

 

//------------------------------php-----------------------------------//

 

Please help me :(

 

Link to comment
https://forums.phpfreaks.com/topic/64228-multiple-search-parameter/
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.