Как реализовать фильтр(ajax,php)?

Привет всем.

Как реализовать фильтр, который будет показывать только те блоки, в которых есть соответствующая информация, а все другие скрывать?

Есть таблицы "Районы", "Улицы", ну и самая главная таблица "Отели". В таблице "Отели" есть столбцы "Район", "Улица". В них записываю наименование района или улицы отеля, а не передаю id из таблиц.

Например, есть район "Васильевский"(сделано в виде чекбокса), и когда мы нажмем на этот чекбокс, то покажется блок с информацией, у которого в БД значение района "Васильевский", а другие - скроются. Хочу заметить, что в фильтре можно выбирать много значений: Например, район "Васильевский", можно выбрать улицу "Попкова", "Пупкина" и выведутся отели в этом районе.

В общем, мульти-чекбоксы. Может есть какой-то другой вариант? Прошу помочь.
<form action="index.php" method="post">
        <div id="filter_c">
            <div class="rajon">
              <span>Rajon</span>
                  <div class="filter_l"> 
                    <?php foreach ($rajon as $id => $rajon): ?>
                        <div class="kbox">
                        <input type="checkbox" id="rajon_<?=$id;?>" value="<?=$id;?>" name="rajon[]" />
                          <label for="rajon_<?=$id;?>">
                            <span class="filter_name"><?=$rajon['rajon'];?></span>
                          </label>
                        </div>
                    <?php endforeach; ?>
                  </div>
            </div>
            <div class="street">
              <span>Street</span>
                  <div class="filter_l"> 
                    <?php foreach ($street as $id => $street): ?>
                        <div class="kbox">
                        <input type="checkbox" id="street_<?=$id;?>" value="<?=$id;?>" name="street[]" />
                          <label for="street_<?=$id;?>">
                            <span class="filter_name"><?=$street['street'];?></span>
                          </label>
                        </div>
                    <?php endforeach; ?>
                  </div>            
            </div>             
          </div>
      </form>

Вот блок с информацией, который выводится циклом
<div class="desc">
      <h2><?=$hotel['name']?></h2>
       <p>Region: <?=$hotel['region']?></p>
    </div>
  • Вопрос задан
  • 1984 просмотра
Пригласить эксперта
Ответы на вопрос 1
evgeniy2194
@evgeniy2194
PHP, js developer
Отдавайте сразу все отели в JSON формате клиенту с помощью ajax.
$.ajax({
...
dataType: 'JSON',
success: function(response){
otels = response;
}
...
});

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

$('#checkbox').change(function(){
    $.each(otels, function(){
        if(this.region == $('#checkbox').val()){
            //Тут что-то делаем
        }
    });
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы