Jump to content

php mysql search output


kezkez

Recommended Posts

Hello, I have a search script (search.php) that outputs the query on the same page that the search bar is on. What I want to do is be able to input the parameters into the search bar, click search, and then have the output come up on a new page. Any help is greatly appreciated since I am new to php.

 

The search page script is currently:

 

search.php

-------------

<?php

 

 

$hostname_logon = "localhost" ; 

$database_logon = "mysql" ; 

$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>Please enter 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 contacts WHERE firstName LIKE \"%$trimm%\" OR lastName LIKE  \"%$trimm%\" OR address LIKE \"%$trimm%\" ORDER BY firstName  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[ 'lastName' ];

      }

      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

?>

 

<html>

<body>

  <br>

 

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

               

                <p style="text-align: center;">

                  Enter contact parameters to search database:             

                </p>

 

      <div align="center">

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

          <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 contacts WHERE lastName = '$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[ 'firstName' ] );

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

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

 

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

<?php echo ' '; ?>

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

<?php echo $linkdesc; ?>

</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/136583-php-mysql-search-output/
Share on other sites

<?php
if (isset($_POST['search'])){
$query = $_POST['search_query'];
header("location: search.php?q=$query");}
?>

<form method="post" action="search.php?q=">
		<p><input type="text" name="search_query" class="textbox" />
  			<input type="submit" name="search" class="button" value="Search" /></p>
</form>

 

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.