JV Valeroso
JV Valeroso

Reputation: 1

How to filter search in PHP

Please help, the code is working to search name but i want to filter aside from FirstName and LastName i want to limit the search for High School only (Habay Elementary School, Dasma National High School, Alab High School).

<?php
$dbhost = "localhost";$dbname = "do";$dbuser = "root";$dbpass = "usbw";         
//Connection
global $tutorial_db;
$tutorial_db = new mysqli();
$tutorial_db->connect($dbhost, $dbuser, $dbpass, $dbname);
$tutorial_db->set_charset("utf8");
//  Check Connection
if ($tutorial_db->connect_errno) {
    printf("Connect failed: %s\n", $tutorial_db->connect_error);
exit();
}
// Define Output HTML Formating
$html = '';
$html .= '<li class="result">';
$html .= '<a href="urlString">';
$html .= '<h3>nameString</h3>';
$html .= '<h4>functionString</h4>';
$html .= '</a>';
$html .= '</li>';
// Get Search
$search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
$search_string = $tutorial_db->real_escape_string($search_string);
// Check Length More Than One Character
if (strlen($search_string) >= 1 && $search_string !== ' ') {
// Build Query
 $query = 'SELECT * FROM personneldo WHERE FirstName LIKE  "%'.$search_string.'%" OR LastName LIKE "%'.$search_string.'%"';
// Do Search
$result = $tutorial_db->query($query);
while($results = $result->fetch_array()) {
$result_array[] = $results;
}
// Check If We Have Results
if (isset($result_array)) {
foreach ($result_array as $result) {

if ($type='bacoores'){
// Format Output Strings And Hightlight Matches $display_function = preg_replace("/".$search_string."/i", "<b  class='highlight'>".$search_string." </b>", $result['FirstName']);
$display_name = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search_string."</b>", $result['LastName']);
$display_url = '/bacoor/login/JVSearchOutput.php?id='.urlencode($result['studid']);
// Insert Name
$output = str_replace('nameString', $display_name, $html);
// Insert Function
$output = str_replace('functionString', $display_function, $output);
// Insert URL
$output = str_replace('urlString', $display_url, $output);
// Output
echo($output);
 }   }
}else{
// Format No Results Output
$output = str_replace('urlString', 'javascript:void(0);', $html);
$output = str_replace('nameString', '<b>No Results Found.</b>', $output);
$output = str_replace('functionString', 'Sorry :(', $output);
// Output
echo($output);
}
}?>

Upvotes: 0

Views: 128

Answers (3)

Pupil
Pupil

Reputation: 23948

Add School parameter in your Where clause.

$query = "SELECT * FROM personneldo 
                        WHERE (FirstName LIKE  '%$search_string%' 
                        OR LastName LIKE '%$search_string%')
                        And (School = 'High School')";

Explanation:

1) Your SQL searches for those records who have search string anywhere (in the beginning/middle/end) in the field value.

2) You were already searching for FirstName and LastName, School was missing.

Upvotes: 1

Julio Soares
Julio Soares

Reputation: 1190

$query = "SELECT * FROM personneldo 
          WHERE FirstName LIKE '%$search_string%' 
             OR LastName  LIKE '%$search_string%' 
             OR School    LIKE '%$search_string%'";

Assuming the field name is School

Upvotes: 0

Brian McNestry
Brian McNestry

Reputation: 155

One solution would be to create another column in your table that contained the type of the school such as High School or Elementary School and then a simple query like this would work.

SELECT * FROM people WHERE type='High School'

However to answer your question you could use the LIKE SQL Operator such as below

SELECT * FROM people WHERE school LIKE '%High School%'

As it says on W3schools

The LIKE operator is used in a WHERE clause to search for a specified pattern in a column.

More information here

http://www.w3schools.com/sql/sql_like.asp

Upvotes: 0

Related Questions