Когда флажок снят, я хочу показать все данные из базы данных - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу сделать поиск с помощью флажков. Он работает, когда флажки установлены, но ничего не показывает, когда не отмечен. Я хочу показать все данные из базы данных, когда флажок снят

$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>

В базе данных есть столбец с именем «гражданское состояние», который имеет значение ENUM «Одинокий», «Женат».

Есть 2 флажка женатых и одиноких. Когда я выбираю женатых, отображается только список людей, которые женаты. Когда я выбираю один, отображается только один список людей. Когда выбраны оба, отображаются оба результата. Но, когда они оба не проверены, я хочу показать всем женатым и одиноким людям.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019
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 голосов
/ 02 апреля 2019

Вы хотели бы использовать способ построить свой 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...