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
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.