We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 16240
    • 64 Posts
    Здравствуй, дорогое сообщество! grin

    Возникла небольшая задача: нужно организовать прайс-лист на сайте. Функционал такой - Загружаем данные из Excel (через .csv) получаем страницу с прайсом, НО необходимо, чтобы к этой таблице добавлялось 2 поля справа, на одном ставится галочка, что товар выбран, на другом количество. Т.е. что-то типа online форму заказа. После того, как поля выбраны и кол-во товара написано, можно было нажать кнопку отправить и все это дело улетает на e-mail. А если еще и те поля, которые не заполнены из письма этого вычеркиваются, то получается вообще очень полезная и функциональная вещь.

    Есть ли готовое решение? Может кто-то уже с таким сталкивался?
      • 22301
      • 1,084 Posts
      Совсем готового решения нет.
      Сразу скажу, что задача исключительно для знатоков php безотносительно к modx.
      Решение тривиальное, можно поискать на php-форумах, если из сообщников никто не откликнется.
        [img]http://jurist-info.ru/pic/rrr.jpg[/img]

        Безжалостный пияр!
        Artima -- неуч!
        Осторожно: преступная локализация -- modx-cms.ru
        Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

        Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
        • 16240
        • 64 Posts
        openagate, спасибо, что отозвался! Хоть есть кому ответить!
        Сам то я искал, понимаю, что готового нет, но ОЧЕНЬ надеялся что у кого-то в "загашнике" лежит. Вот и думаю, может кто поделится? Если работа действительно большая и просто так отдавать не хочется, то не вопрос. Найдем согласование и в этом! laugh
          • 22301
          • 1,084 Posts
          http://s-g-k.ru/sale/price.html я себе вот такое так и не доделал:)

          вот код сниппета:

          ///////////////////////////////////
          
            // Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru 
            $content = get_content(); 
            // Разбираем содержимое, при помощи регулярных выражений 
            $pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"; 
            preg_match_all($pattern, $content, $out, PREG_SET_ORDER); 
            $dollar = ""; 
            $euro = ""; 
            foreach($out as $cur) 
            { 
              if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]); 
              if($cur[2] == 978) $euro   = str_replace(",",".",$cur[4]); 
            } 
          
            $dollar = $dollar*1.00;
            //echo "Доллар - ".$dollar."<br>"; 
            //echo "Евро - ".$euro."<br>";
            
            function get_content() 
            { 
              // Формируем сегодняшнюю дату 
              $date = date("d/m/Y"); 
              // Формируем ссылку 
              $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; 
              // Загружаем HTML-страницу 
              $fd = fopen($link, "r"); 
              $text=""; 
              if (!$fd) echo "Запрашиваемая страница не найдена"; 
              else 
              { 
                // Чтение содержимого файла в переменную $text 
                while (!feof ($fd)) $text .= fgets($fd, 4096); 
              } 
              // Закрыть открытый файловый дескриптор 
              fclose ($fd); 
              return $text; 
            } 
          ///////////////////////////////////
          
          $action = $modx->documentIdentifier;
          global $row_sortir;
          $uid  = $_GET['uid'];
          echo $uid;
          $row_id = 1;
          $outputselect .=<<<EOD
          <form method="post" action="[~[*id*]~]">
               <select name="selectId">       
                 <option value="1">по артикулу</option> 
                 <option value="2">по названию</option>
                 <option value="3">по цене</option>  
              </select>
          <input type="submit" name="submit" value="отсортировать">
          </form>
          EOD;
          
          echo $outputselect;
          
          if (isset($_POST["submit"])) {
            $row_id = $_POST["selectId"];
          //  $modx->sendRedirect($modx->makeUrl($id));
          //  $modx->sendRedirect($action);
          }
          
          // Начало таблицы
          
          $table_start = "<table border=0 cellspacing=0 cellpadding=0 class=price>\n";
          //<form method=\"post\">\n";
          echo $table_start;
          
          if ($row_id == 1) {
          echo "<colgroup><col class=sort_by></col><col span=3></col></colgroup>";
          }
          elseif ($row_id == 2) {
          echo "<colgroup><col></col><col class=sort_by></col><col span=2></col></colgroup>";
          }
          else { 
          echo "<colgroup><col span=2></col><col class=sort_by></col><col></col></colgroup>";
          }
          
          echo "\n<tr>\n";
          
          
          
          
          $row = 0; 
          
          $fp = fopen ("doc/3.csv","r"); // файл открыт
          
          // получаем построчно данные из csv-файла с разделителями  
          while ($data = fgetcsv ($fp, 1000, ";")) { 
          
          $counter = count ($data); 
          
              for ($c=0; $c<$counter; $c++) { 
          // Первую строчку таблицы выводим как заголовок 
                 if ($row == 0) { 
                 echo $th = "<th>$data[$c]</th>\n"; 
                 } else {  
           
                 $huy[$row] = $data; // тупо нумеруем массив,построчно
                 } 
              } 
          
          $r = $row; 
          $row++; 
          }
          
          /* $huy -- двумерный массив данных
          можно раскомментить следующие строчки,
          чтоб понять, что к чему:
          echo "<pre>";
          print_r($huy);
          echo "</pre>";
          вот его-то и надо уметь сортировать по столбцам
          */
          
          $row_sortir = $row_id;
          //echo $row_sortir;
          usort($huy, "sortir"); //а вот и сортировка  
          
          // Заканчиваем первую строку в таблице 
          $output .= "</tr>\n"; 
          
          for ($cc=0; $cc<$r; $cc++)
          {
          $output .= "<tr>\n"; 
          for ($c=0; $c<$counter; $c++) 
          {
          
          if ($c == $counter - 1)            {
          $huy[$cc][$c] = $huy[$cc][$c]*$dollar;
          $huy[$cc][$c] = round($huy[$cc][$c], 2);
          if ($huy[$cc][$c] == 0) $huy[$cc][$c] = "по запросу";
                                             } 
          
          $output .= "<td class=\"t_".$c."\">".$huy[$cc][$c]."</td>";
          
          //if ($c == $counter - 1)            {
          
          //$output .= "
          //<td>
          //<input type=\"hidden\" name=\"\" value=\"".$huy[$cc][0]."\">
          //<input type=\"checkbox\" name=\"selecttId\" value=\"".$huy[$cc][0]."\">
          //</td>\n";
                                            }
          //else                              {
          //$output .= "\n";
          //                                  } 
          //}
          $output .= "</tr>\n"; 
          }
          
          $output .= "</table>";
          //<input type=\"submit\" name=\"submitt\" value=\"запросить\"></form>\n";
          //$submited=isset($_POST['submitt']);
          //$fid = "22";
          //if ($submited){
          //$_SESSION['GetPageTitle'] = $_POST["selecttId"];
          
          //$modx->sendRedirect($modx->makeUrl($fid));
          //}
          
          fclose ($fp); 
          
          return $output;
          
          function sortir($a, $b) {
                 global $row_sortir;
                 return strnatcasecmp($a[$row_sortir-1], $b[$row_sortir-1]);
          }
          



          Курсы валют сообщник сделал.

          Объяснять как и что, не буду, ибо и сам уже не помню, собирал по кусочкам. Сортировку сделал, а от для заказа приблуды не доделал, эти строчки задокументированы:) Надеюсь, хоть как-то поможет:)
            [img]http://jurist-info.ru/pic/rrr.jpg[/img]

            Безжалостный пияр!
            Artima -- неуч!
            Осторожно: преступная локализация -- modx-cms.ru
            Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

            Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
            • 897
            • 1,620 Posts
            если в админку ничего не надо встраивать, то написать такой сниппет можно за пару дней.
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

              Не используйте Revo для "просто сайтов". Используйте Evo

              Who can defeat the Russian bear?
              • 16240
              • 64 Posts
              А зачем в админку встраивать? просто, например, в корень сайта или папку засунул файл с определенным названием, а он его оттуда "подсасывает" постоянно. Или так тормозить будет сильно? И лучше делать, чтобы он каким-нить модулем из админки эту инфу закачивал в базу, а при обновлении старую тер?
              Что по ценам?
                • 897
                • 1,620 Posts
                да $150 хватит smiley стучите в аську smiley
                  "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                  Не используйте Revo для "просто сайтов". Используйте Evo

                  Who can defeat the Russian bear?
                  • 16240
                  • 64 Posts
                  ОК! На неделе обязательно стукнусь smiley Когда уже поближе к делу будет....