За последние 24 часа нас посетили 58859 программистов и 1816 роботов. Сейчас ищут 1038 программистов ...

Как написать фильтр с диапазоном?

Тема в разделе "PHP для новичков", создана пользователем Rondos, 13 сен 2015.

  1. Rondos

    Rondos Новичок

    С нами с:
    13 сен 2015
    Сообщения:
    4
    Симпатии:
    0
    На сайте есть уже фильтр с диапазоном, но надо вводить значение от и до в поле input. Мне надо 2 выпадающих списка select и для другой записи в MySQL.
    Вот код для фильтра input:
    Код (PHP):
    1.     if ($_POST['buttonClassifiedsSearch']) {
    2.         $nr = 0;
    3.         array_pop($_POST);
    4.         //var_dump($_POST);
    5.         foreach ($_POST as $key => $value) {
    6.             if (!empty($value)) {
    7.                 if ($nr < count($_POST)) {
    8.                     $paginationTableWhere .= " AND ";
    9.                 }
    10.                 if($key=="classified_price1")
    11.                 {
    12.                     $key="classified_price";
    13.                     $paginationTableWhere .= htmlspecialchars(mysql_real_escape_string(stripslashes
    14.                         (trim($key)))) . " >= " . htmlspecialchars(mysql_real_escape_string(stripslashes
    15.                         (trim($value))));
    16.                 }else if($key=="classified_price2"){
    17.                     $key="classified_price";
    18.                     $paginationTableWhere .= htmlspecialchars(mysql_real_escape_string(stripslashes
    19.                         (trim($key)))) . " <= " . htmlspecialchars(mysql_real_escape_string(stripslashes
    20.                         (trim($value))));
    21.                 }else{
    22.                     $paginationTableWhere .= htmlspecialchars(mysql_real_escape_string(stripslashes
    23.                         (trim($key)))) . " LIKE '%" . htmlspecialchars(mysql_real_escape_string(stripslashes
    24.                         (trim($value)))) . "%'";
    25.                 }
    26.                 $nr++;
    27.             }
    28.         }
    29.     } 
    Вывод на сайте:
    Код (PHP):
    1. if ($categories[$categoryId]['category_classifieds_price'] == "on") {
    2.             $blockClassifieds .= "<td class='classifieds-list-search' width='110px'>" . $lang['price'] .
    3.                 ":<br><div><input name='classified_price1' type='text' size='" . iconv_strlen($lang['price'],
    4.                 'UTF-8') . "' maxlength='20'> <span>-</span> <input name='classified_price2' type='text' size='" . iconv_strlen($lang['price'],
    5.                 'UTF-8') . "' maxlength='20'></div>";
    6.         }
    Надо аналогичным образом вывести поле field_autoyear из базы при условии, что ['classifieds_field_autoyear'] == "on" и в двух выпадающих списках для задачи диапазона.
    В примере classified_price это float, а field_autoyear это enum.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    я не вижу SQL запроса
     
  3. Rondos

    Rondos Новичок

    С нами с:
    13 сен 2015
    Сообщения:
    4
    Симпатии:
    0
    Я тоже. Вот эта часть кода проверяет включено ли поле для отображения в категории:
    Код (Text):
    1. if ($categories[$categoryId]['category_classifieds_price'] == "on") {
    'category_classifieds_price' это запись в базе с возможными значениями enum- on,nl,off.

    В первом коде эту запись видно в коде:
    Код (Text):
    1. $key="classified_price";
    'category_classifieds_price' и classified_price связаны в базе точно такими же связями как и требуемые 'classifieds_field_autoyear' и field_autoyear .
    Первая включает отображение поля на сайте, а вторая хранит в себе значения, которые пользователи введут.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Нет всего кода чтобы понять как это всё работает, есть документация к нему?