We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21524
    • 90 Posts
    Добрый день, реализовал у себя на сайте форму с созданием csv-файла и отправкой его на почту как описано здесь - http://wiki.modxcms.com/index.php/EForm_to_CSV

    Однако хотелось бы, чтобы можно было несколько раз забивать форму (к примеру несколько товаров) в один CSV на сервере. И потом этот сгенерированный файл скачать.

    Это возможно малой кровью реализовать? huh
      • 16289
      • 121 Posts
      Чего-то я не понял. Надо при заполнении формы 2...n раз высылать общий файл? Так врядли получится малой кровью.
      Делайте занесение данных в БД при отправке формы, а потом по запросу генерируйте письмо с файлом с данными из БД. Так легче, я считаю
        How could number of mysql queries be more than number of tables in DB???
        • 21524
        • 90 Posts
        Немного не то имелось ввиду - хочется так:
        Заполнил человек форму, создался CSV на сервере и лежит там. Потом пришел еще человек, заполнил форму - даные записались в тот же CSV новой строкой и т.д.
          • 16289
          • 121 Posts
          Так тогда просто открывайте файл в режиме дозаписи:
          $f = fopen(’example.csv’, ’ab’);
          и вписывайте то, что надо.
          И не забывайте записывать символы завершения строки.
          fputs($f, "line\r\n");
            How could number of mysql queries be more than number of tables in DB???
            • 21524
            • 90 Posts
            отлично, так и сделаю. спасибо!
              • 36279
              • 2 Posts
              ребята, привет
              у меня такая задача
              необходимо дописывать данные формы в файл csv, который должен постоянно дописываться (пополняться) данными
              саму запись прикрутил так

              $f = fopen('./assets/files/db.csv', 'a+');
              fputs($f,date('d.m.Y:H.i').';'.$fields['csv']."\r\n");

              все отлично работает, но проблема с кодировкой, так как уважаемый ms excel не любит кодировку utf-8
              ему подавай 1251

              версия движка: evo 1.0.12 UTF-8

              хостинг reg.ru при как было уточнено у тех поддержки не поддерживает iconv

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


              function attachCSV(&$fields){

              // $cr = "\n";
              $csv .=
              csv($fields['name']).';'
              .csv($fields['email']).';'
              .csv($fields['tel']).';'
              .$cr;

              // set fields
              // $fields['csv'] = mb_convert_encoding($fields['csv'] , "UTF-8", "windows-1251");
              $fields['csv'] = $csv;
              $string = $fields['csv'];
              // $fields['registrationid'] = $registrationid;
              return true;
              }

              function csv($value) {
              if (strstr($value, ";") || strstr($value, "\n") || strstr($value, "\r")) {
              return "" . str_replace("\"", "\"\"", $value) . "";
              } else {
              return "".$value."";
              }
              }

              function utf2win ($string) {
              $utf = array( "/\xD0\xB0/", "/\xD0\xB1/", "/\xD0\xB2/", "/\xD0\xB3/",
              "/\xD0\xB4/", "/\xD0\xB5/", "/\xD1\x91/", "/\xD0\xB6/",
              "/\xD0\xB7/", "/\xD0\xB8/", "/\xD0\xB9/", "/\xD0\xBA/",
              "/\xD0\xBB/", "/\xD0\xBC/", "/\xD0\xBD/", "/\xD0\xBE/",
              "/\xD0\xBF/", "/\xD1\x80/", "/\xD1\x81/", "/\xD1\x82/",
              "/\xD1\x83/", "/\xD1\x84/", "/\xD1\x85/", "/\xD1\x86/",
              "/\xD1\x87/", "/\xD1\x88/", "/\xD1\x89/", "/\xD1\x8A/",
              "/\xD1\x8B/", "/\xD1\x8C/", "/\xD1\x8D/", "/\xD1\x8E/",
              "/\xD1\x8F/", "/\xD0\x90/", "/\xD0\x91/", "/\xD0\x92/",
              "/\xD0\x93/", "/\xD0\x94/", "/\xD0\x95/", "/\xD0\x81/",
              "/\xD0\x96/", "/\xD0\x97/", "/\xD0\x98/", "/\xD0\x99/",
              "/\xD0\x9A/", "/\xD0\x9B/", "/\xD0\x9C/", "/\xD0\x9D/",
              "/\xD0\x9E/", "/\xD0\x9F/", "/\xD0\xA0/", "/\xD0\xA1/",
              "/\xD0\xA2/", "/\xD0\xA3/", "/\xD0\xA4/", "/\xD0\xA5/",
              "/\xD0\xA6/", "/\xD0\xA7/", "/\xD0\xA8/", "/\xD0\xA9/",
              "/\xD0\xAA/", "/\xD0\xAB/", "/\xD0\xAC/", "/\xD0\xAD/",
              "/\xD0\xAE/", "/\xD0\xAF/");

              $win = array( "\xE0","\xE1",
              "\xE2","\xE3","\xE4","\xE5","\xB8","\xE6","\xE7","\xE8",
              "\xE9","\xEA","\xEB","\xEC","\xED","\xEE","\xEF","\xF0",
              "\xF1","\xF2","\xF3","\xF4","\xF5","\xF6","\xF7","\xF8",
              "\xF9","\xFA","\xFB","\xFC","\xFD","\xFE","\xFF","\xC0",
              "\xC1","\xC2","\xC3","\xC4","\xC5","\xA8","\xC6","\xC7",
              "\xC8","\xC9","\xCA","\xCB","\xCC","\xCD","\xCE","\xCF",
              "\xD0","\xD1","\xD2","\xD3","\xD4","\xD5","\xD6","\xD7",
              "\xD8","\xD9","\xDA","\xDB","\xDC","\xDD","\xDE","\xDF");

              return preg_replace($utf, $win, $string);
              }


              функция была взята отсюда http://www.rsdn.ru/forum/web/479239.all

              подскажите, как прикрутить перекодирование данных с формы из utf-8 в 1251

              в php не силен

              заранее спасибо