We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1788
    • 1,103 Posts
    1. вначале шаблона.
    2. это вариант простой формы для фильтра. вполне можно и сниппетом создать.
    Quote from: rellai at Jun 22, 2010, 07:06 AM

    3. что делает этот код и куда вставлять?
    <?php
    return $_SESSION[$options];
    ?>

    Это модификатор плагина phx. Добавляется в директорию плагина по аналогии.
    assets\plugins\phx\modifiers\session.phx.php
      • 24803
      • 61 Posts
      antey, Спасибо! Сделал как вы сказали.
      Фильтр теперь сохраняет введенные данные при обновлении страницы, но дитто по прежнему не фильтрует (

      Поправленный под свои нужды код:
      <?php
      $table = $modx->getFullTableName("site_content");
      $table2 = $modx->getFullTableName("site_tmplvar_contentvalues");
      $table3 = $modx->getFullTableName("site_tmplvar_templates");
      
      $cena_ot = $_SESSION['cena_ot'];
      $cena_do = $_SESSION['cena_do'];
      $produkciya = $_SESSION['produkciya'];
      $year = $_SESSION['year'];
      
      $sqlcena_ot =  empty($_POST['cena_ot']) ? " " : "and id in (select contentid from $table2 where tmplvarid=5 and value>='$cena_ot') ";
      $sqlcena_do =  empty($_POST['cena_do']) ? " " : "and id in (select contentid from $table2 where tmplvarid=5 and value<='$cena_do') ";
      $sqlprodukciya =empty($_POST['produkciya']) ? " " : "and id in (select contentid from $table2 where tmplvarid=4 and value='$produkciya') ";
      $sqlyear = empty($_POST['year']) ? " " : "and id in (select contentid from $table2 where tmplvarid=3 and value='$year') ";
      
      // sostavlenie zaprosa
      $where = "template=5 $sqlcena_ot $sqlcena_do $sqlprodukciya $sqlyear";
      $dbQuery = "SELECT id FROM $table WHERE $where";
      
      // vivod id
      $rs = $modx->db->query($dbQuery);
      $row = $modx->db->getColumn("id",$rs);
      $res = implode(",", $row);
      return $res;
      ?>
      


      вызов дитто
      [!Ditto? &tpl=`spectehnika` 
      &documents=`[[vibor]]`
      &parents=`3`
      &extenders=`request`
      &noResults=`Извините, Спецтехники по Вашему запросу не найдено.`!]


      Куда теперь копать? что то я совсем замучался с этим фильтром (
        • 1788
        • 1,103 Posts
        Quote from: rellai at Jun 24, 2010, 01:33 PM

        Куда теперь копать? что то я совсем замучался с этим фильтром (
        Форма + обработка post<=>session
        Если без сессий, после нажатия кнопки фильтра в форме переменные сбросятся.
          • 24803
          • 61 Posts
          Я понял что сессия нужна только для сохранения формы...
          но почему не работает выборка?
          что сейчас то делать? ((
            • 1788
            • 1,103 Posts
            Quote from: rellai at Jun 24, 2010, 10:48 PM

            Я понял что сессия нужна только для сохранения формы...
            но почему не работает выборка?
            что сейчас то делать? ((
            Смотрите где ошибка. Для начала в дитто уберите &parents=`3`
            Проверять сниппет [[vibor]] можно так:
            в конце return $res; замениет на echo $res; и добавьте echo $where;
              • 24803
              • 61 Posts
              RES: выводит пустоту

              WHERE:
              template=5 and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=5 and value>='5000') and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=5 and value<='9000') and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=4 and value='Автовышки') and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=3 and value='2005')


                • 1788
                • 1,103 Posts
                Quote from: rellai at Jun 25, 2010, 02:13 AM

                RES: выводит пустоту

                WHERE:
                template=5 and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=5 and value>='5000') and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=5 and value<='9000') and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=4 and value='Автовышки') and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=3 and value='2005')

                упрости сначала запрос до 1 блока, а когда он заработает то наращивай сложность
                WHERE
                template=5 and id in (select contentid from `ldyarru_specyar`.`modx_site_tmplvar_contentvalues` where tmplvarid=5 and value>='5000')
                  • 24803
                  • 61 Posts
                  Я попробовал оставить одну цену...
                  если поставить в фильтре cena_ot - 0 то выбираются все записи....
                  а если хотя бы 1 то уже выборки нет
                  $cena_ot = $_SESSION['cena_ot'];
                  $sqlcena_ot =  empty($_POST['cena_ot']) ? " " : "and id in (select contentid from $table2 where tmplvarid=5 and value>='$cena_ot') ";
                  $where = "template=5 $sqlcena_ot";
                    • 1788
                    • 1,103 Posts
                    $_SESSION[’cena_ot’] что содержит при попытке вывода?
                      • 24803
                      • 61 Posts
                      тоже самое что и в форме ввода
                      тоесть тут все правильно