取消选中复选框时,我想显示数据库中的所有数据

问题描述 投票:-1回答:2

我想用复选框进行搜索。它在选中复选框时有效,但在未选中时不显示任何内容。我想在取消选中复选框时显示数据库中的所有数据

$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个复选框。当我选择结婚复选框时,只有已婚人士的列表显示。当我选择单个人单列表时显示。选择两者时,它会显示两个结果。但是,当他们两个都没有被检查时,我想展示所有已婚和单身的人。

php wordpress
2个回答
0
投票
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.

0
投票

您可能希望使用一种方法来构建具有和不具有各种选项的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')
© www.soinside.com 2019 - 2024. All rights reserved.