我想用复选框进行搜索。它在选中复选框时有效,但在未选中时不显示任何内容。我想在取消选中复选框时显示数据库中的所有数据
$single = isset($_REQUEST['single']) ? 'Single' : '';
$married = isset($_REQUEST['married']) ? 'Married' : '';
SELECT *
FROM $users_table
WHERE (civil_status = '$single' OR civil_status = '$married')
<input type="checkbox" name = "single">
<label class="label-for-checkbox" >Single</label>
<input type="checkbox" name = "married">
<label class="label-for-checkbox" >Married</label>
在数据库中有一个名为“Civil status”的列,其中ENUM值为“Single”,“Married”。
结婚和单身有2个复选框。当我选择结婚复选框时,只有已婚人士的列表显示。当我选择单个人单列表时显示。选择两者时,它会显示两个结果。但是,当他们两个都没有被检查时,我想展示所有已婚和单身的人。
You need to attach your query on form submit :
$query = "SELECT * FROM `table_name'";
if(isset($_POST['single']))
$query .= "where 'relationship_status' = 'S' or";
if(isset($_POST['married']))
$query .= "where 'relationship_status' = 'M'";
如果有更多条件,您可以附加上述条件。
Manage the or and and accordingly according as per your requirement.
您可能希望使用一种方法来构建具有和不具有各种选项的sql。最简单的方法是使用implode()
数组:
$opts = [];
if(isset($_REQUEST['single']))
$opts[] = "civil_status = 'Single'";
if(isset($_REQUEST['married']))
$opts[] = "civil_status = 'Married'";
$sql = "SELECT * FROM {$users_table}";
if(!empty($opts))
$sql .= " WHERE (".implode(" OR ", $opts).")";
如果您没有选择任何内容,则会写入:
SELECT * FROM {$users_table}
如果您选择了一件事,它会写:
SELECT * FROM {$users_table} WHERE (civil_status = 'Married')
如果两者都被选中:
SELECT * FROM {$users_table} WHERE (civil_status = 'Married' OR civil_status = 'Single')