Jump to content

Recommended Posts

Hello to you all !

I would need your advice and suggestions on how to build the following code. Please note that I am not specifically asking for the full code (!) but I am struggling to get the concepts all perfectly right.

1. The user enters keywords in a search bar. That's easy ;
2. The corresponding data is retrieved from a database through a standard PHP query. That's OK for me ;
3. Now imagine there is a checkbox next to the search bar, allowing the user to filter the results in step 2 according to the checkbox's criteria. How can I automatically hide or highlight the filtered results without making a new query and without reloading the whole page ? I guess there is some javascript / ajax trick there...

In detail :

[1] Table contents :
Column A | Column B
car | blue
car | red
car | blue
truck | blue
truck | red
truck | green

[2] Search bar : looks into column A, and displays results in the following format :
if "car" is sought for :
car | blue
car | red
car | blue

[3] Now imagine there is a checkbox beneath the search bar, allowing the user to select a colour between red, blue and green (or a combination if more than one checked). I have tried to give the same ID (=colour) for each row returned in [1], and then put nothing in the div when a checkbox was unchecked. However, this does not work out (only the first match is hidden) because IDs are unique. Please remember I am trying to automatically update the results table without refreshing the whole page.

Thanks a lot for your help in step [3].
Link to comment
https://forums.phpfreaks.com/topic/20499-hiding-specific-results-from-a-query/
Share on other sites

you could use the checkbox to form the query string. Using an if statement you could add...

[code]
$qry = "SELECT * FROM `table` WHERE `cala` LIKE '%".$term1."%'";
if ($_post['chkbx1'] === true)
{
$qry .= "AND `colb` = 'ur criteria';
}

//.... and so on.
?>
[/code]

Thanks for your quick answer, but I am not sure your solution prevents me from running the query over again.

My point was actually that once the query is run the first time, any further filter by the user (through a checkbox for instance) should select a subset of the initial results, and non-relevant results should be hidden dynamically (without refreshing the whole page). Is this clear ?

Thanks a lot.
No..

You run the query once but use the check buttons to formulate the string before you run it......

eg.

[code]
<?php
$searchname = $_GET['sname'];

$qry = "SELECT * FROM `people` WHERE `surname` LIKE '%" . $searchname . "%'";

if (isset($_GET['chksex'])
{
if ($_GET['chksex'] == 'male')
{
  $qry . = " AND `sex` = 'm'";
}
else
{
  $qry . = " AND `sex` = 'f'";
}
}

$search = mysql_query($qry);
?>
[/code]

The above code would search for the name you entered and if you checked one (or both) the boxes for sex it would add the criteria to the query BEFORE the query is executed.
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.