|
|
|
| Помогите реализовать поиск:
есть текстовое поле,пять чекбоксов и кнопка
<div class="search-bar">
<h3>Поиск</h3>
<form action="search.php" method="post" >
<div class="form-group">
<input type="text" name="search" class="form-control" placeholder="Что искать?">
</div><!-- .form-group -->
<div class="form-group">
<div class="checkbox">
<label>
<input type="checkbox" name="ch1" value="">
Животные
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch2" value="">
Птицы
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch3"value="">
Рыбы
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch4" value="">
Насекомые
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch5" value="">
Статьи
</label>
</div>
</div><!-- .form-group -->
<div class="form-group">
<p><small>Если ничего не выбрано, поиск по всем разделам.</small></p>
</div><!-- .form-group -->
<div class="form-group">
<input type="submit" value="Искать" class="btn btn-primary">
</div><!-- .form-group -->
</form>
</div>
|
нужно реализовать поиск,при этом,если:
не один чекбокс не выбран-поиск по всем разделам
если выбраны все-поиск по всем разделам
в зависимости сколько и какие чекбоксы выбраны,поиск должен осуществляться по выбраным разделам
помогите обработать хотя бы один вариант,например с двумя выбранными чекбоксами
заранее спасибо | |
|
|
|
|
|
|
|
для: ipuchiko
(07.05.2014 в 18:34)
| | неправильно поля проименованы, должна быть форма примерно такой
<form action="search.php" method="post" >
<div class="form-group">
<input type="text" name="search" class="form-control" placeholder="Что искать?">
</div><!-- .form-group -->
<div class="form-group">
<div class="checkbox">
<label>
<input type="checkbox" name="ch[]" value="">
Животные
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch[]" value="">
Птицы
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch[]"value="">
Рыбы
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch[]" value="">
Насекомые
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="ch[]" value="">
Статьи
</label>
</div>
</div><!-- .form-group -->
<div class="form-group">
<p><small>Если ничего не выбрано, поиск по всем разделам.</small></p>
</div><!-- .form-group -->
<div class="form-group">
<input type="submit" value="Искать" class="btn btn-primary">
</div><!-- .form-group -->
</form>
|
search.php
<?php
if (empty($_POST['ch'])) {
// поиск по всем разделам
// SELECT * FROM `table`
} else {
// подставляем value выбранных чекбоксов в SQL-запрос
// что-то типа
// SELECT * FROM `table` WHERE section_id IN (' . implode(',', array_map('intval', $_POST['ch'])) . ')'
}
|
| |
|
|
|
|
|
|
|
для: psychomc
(07.05.2014 в 19:07)
| | empty($_POST['ch']) для чекбоксов :)
Уж тогда isset(), ибо чекбокс либо пришел, либо нет.
А вообще массив $_POST как суперглобальный всегда в наличии, а значит проверить в нем наличие ключа можно просто:
<?
$sql = 'SELECT * FROM `table`' . ($_POST['name'] ? ' WHERE section_id IN (' . implode(',', array_map('intval', $_POST['name'])) . ')' : null);
|
| |
|
|
|
|
|
|
|
для: confirm
(08.05.2014 в 10:27)
| | обычная проверка для массива на empty, не вижу здесь ничего такого. да и тернарный оператор тоже сильно сомнительно, не факт что кроме формирования sql запроса там больше ничего не будет,но это уже к ванге | |
|
|
|
|
|
|
|
для: psychomc
(08.05.2014 в 11:07)
| | Чекбокс по логике либо есть, либо отсутствует, а проверка на пустоту, это проверка имеющегося значения. Так зачем городить огород? | |
|
|
|
|
|
|
|
для: confirm
(08.05.2014 в 11:15)
| | ну если совсем уж правильно, то наверное да. но тогда уж и хорошо бы сделать проверку на массив или приведение к массиву | |
|
|
|
|
|
|
|
для: psychomc
(08.05.2014 в 14:15)
| | >сделать проверку на массив
Это подразумевается по умолчанию, так как выше говорилось о именовании полей как массиве значений. Но если говорить в этом русле, то надо не только эти поля проверять, а всю структуру формы, если есть иные поля. А empty и для $a = 1, и для $a = [1] ведь тоже ответит одинаково, не разбираясь в структуре. | |
|
|
|
|
|
|
|
для: psychomc
(07.05.2014 в 19:07)
| | Если выбираем Животные и Статьи то ключи массива будеть 0 и 1 )))
>в зависимости сколько и какие чекбоксы выбраны,поиск должен осуществляться по выбраным разделам | |
|
|
|
|
|
|
|
для: Jovidon
(08.05.2014 в 11:05)
| | херню пишете. как по вашему будет определяться принадлежность чекбокса к разделу и как тогда определить какие данные выбирать? очевидно же, что чекбокс должен содержать id раздела, чтобы по этому разделу искать. | |
|
|
|