Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поиск с чекбоксами
 
 автор: ipuchiko   (07.05.2014 в 18:34)   письмо автору
 
 

Помогите реализовать поиск:
есть текстовое поле,пять чекбоксов и кнопка

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

нужно реализовать поиск,при этом,если:
не один чекбокс не выбран-поиск по всем разделам
если выбраны все-поиск по всем разделам
в зависимости сколько и какие чекбоксы выбраны,поиск должен осуществляться по выбраным разделам

помогите обработать хотя бы один вариант,например с двумя выбранными чекбоксами

заранее спасибо

  Ответить  
 
 автор: psychomc   (07.05.2014 в 19:07)   письмо автору
 
   для: 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'])) . ')'
}

  Ответить  
 
 автор: confirm   (08.05.2014 в 10:27)   письмо автору
 
   для: 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);

  Ответить  
 
 автор: psychomc   (08.05.2014 в 11:07)   письмо автору
 
   для: confirm   (08.05.2014 в 10:27)
 

обычная проверка для массива на empty, не вижу здесь ничего такого. да и тернарный оператор тоже сильно сомнительно, не факт что кроме формирования sql запроса там больше ничего не будет,но это уже к ванге

  Ответить  
 
 автор: confirm   (08.05.2014 в 11:15)   письмо автору
 
   для: psychomc   (08.05.2014 в 11:07)
 

Чекбокс по логике либо есть, либо отсутствует, а проверка на пустоту, это проверка имеющегося значения. Так зачем городить огород?

  Ответить  
 
 автор: psychomc   (08.05.2014 в 14:15)   письмо автору
 
   для: confirm   (08.05.2014 в 11:15)
 

ну если совсем уж правильно, то наверное да. но тогда уж и хорошо бы сделать проверку на массив или приведение к массиву

  Ответить  
 
 автор: confirm   (08.05.2014 в 15:02)   письмо автору
 
   для: psychomc   (08.05.2014 в 14:15)
 

>сделать проверку на массив

Это подразумевается по умолчанию, так как выше говорилось о именовании полей как массиве значений. Но если говорить в этом русле, то надо не только эти поля проверять, а всю структуру формы, если есть иные поля. А empty и для $a = 1, и для $a = [1] ведь тоже ответит одинаково, не разбираясь в структуре.

  Ответить  
 
 автор: Jovidon   (08.05.2014 в 11:05)   письмо автору
 
   для: psychomc   (07.05.2014 в 19:07)
 

Если выбираем Животные и Статьи то ключи массива будеть 0 и 1 )))

>в зависимости сколько и какие чекбоксы выбраны,поиск должен осуществляться по выбраным разделам

  Ответить  
 
 автор: psychomc   (08.05.2014 в 11:09)   письмо автору
 
   для: Jovidon   (08.05.2014 в 11:05)
 

херню пишете. как по вашему будет определяться принадлежность чекбокса к разделу и как тогда определить какие данные выбирать? очевидно же, что чекбокс должен содержать id раздела, чтобы по этому разделу искать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования