Вход • Регистрация

Фильтр по диапазону значений одной характеристики

  • 05 февраля 2016 г. , редакция: 05 февраля 2016 г.
  • День добрый.
    Есть категория, для которой создана характеристика - Мощность. То есть, для каждого товара в этой характеристике хранится число - мощность.
    Надо реализовать фильтр таким образом:
    Два поля (каждое - выпадающий список, все значения характеристики). Получим два числа. Диапазон короче - от и до. Если одно из полей не заполнено, то диапазон рассчитывается или от минимальной мощности до числа указанного в поле До, либо от числа указанного в поле От до максимальной мощности.

    Отредактировал файл show.view.show_search.php, добавил туда код:
    Код
    <?echo'
    <div class="row">
    <label>Мощность (кВА):</label><br><br>
    <label>от</label>
    <div class="select-row">
    <select name="power-from">';
    echo '<option value="0">--</option>';
    foreach ($row["select_array"] as $key => $value){
    echo '<option value="'.$key.'"'.(in_array($key, $row["value"]) ? " selected" : '').'>'.$value.'</option>';
    }
    echo '</select></div>

    <label>до</label><div class="select-row">
    <select name="power-to">';
    echo '<option value="0">--</option>';
    foreach ($row["select_array"] as $key => $value){
    echo '<option value="'.$key.'"'.(in_array($key, $row["value"]) ? " selected" : '').'>'.$value.'</option>';
    }
    echo '</select></div>';


    Теперь сам фильтр выглядит так, как надо.
    Но как заставить его фильтровать?

    В техподдержке туманно намекнули что редактировать надо файл shop.model.php
    А именно методы list_search() и where().
    Насколько понимаю, в методе where() мне требуется както отредактировать запрос к БД, но как?
    И какие изменения требуется внести в метод list_search()?

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

    Приветствуются любые ответы и направления. Я уже сломал голову, пытаясь разобраться
    • 05 февраля 2016 г.
    • Цитата
      техподдержке туманно намекнули что редактировать надо файл shop.model.php
      А именно методы list_search() и where().

      В запросе к базе данных смотрите секцию WHERE
      • 05 февраля 2016 г. , редакция: 05 февраля 2016 г.
      • Это я понял и сам.
        Меня интересует примерно что надо править, и как.
        Вернее, что править я знаю, надо конкатенировать к переменной where нужную часть запроса, а именно условие.

        Надо чтото типа такого добавить в метод where():
        Код
        <?
        if(isset($_POST['power-from'])){
        $from=(int)$_POST['power-from'];
        $where.="AND что-то > $from";// как правильно запрос сформировать в этом месте?
        }
        if(isset($_POST['power-to'])){
        $to=(int)$_POST['power-to'];
        $where.="AND что-то < $to";// как правильно запрос сформировать в этом месте?
        }
        ?>

        Помогите правильно запрос сформировать, пожалуйста

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.