Скрипт приема заявок

Discussion in 'PHP' started by alpotemkin, 25 Nov 2009.

  1. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Доброго времени суток!

    Появилась надобность в скрипте приема заявок. Пользовался поисковиками, но везде выдается скрипт отправки заявки на e-mail. И потому решил спросить у знающих людей на этом форуме.

    1. Как должен выглядеть скрипт (пример):
    ----------
    "Название заявки"

    Имя команды: "текстовое поле"
    Руководитель: "текстовое поле"
    ....
    ....

    "чекпойнт" Вариант 1
    "чекпойнт" Вариант 2
    ...
    ...

    Отправить заявку
    ----------

    P.S. Необходима возможность выбирать сразу несколько вариантов.

    2. Отправка заполненной заявки
    Хотелось бы, чтобы КАЖДАЯ отправленная заявка сохранялась на сервере в виде файла .txt.

    Если где-то уже есть такая тема, то просьба не пинать, а кинуть ссылку на нее.
     
  2. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Нарисуй в фотошопе или выложи конкретно Техническое Задание, возможно ктото напишет бесплатно, то что ты просиш не сложно, поэтому может кто откликнется
     
    _________________________
  3. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Как же должно выглядеть техническое задание? Я вроде все описал... В фотошопе делать нет смысла, потому что мне нужен просто скрипт, а вписать его в шаблон я уже и сам смогу. :)

    А вообще это выглядит примерно так:

    Code:
    <html>
    <head>
      <meta content="text/html; charset=Windows-1251"
     http-equiv="content-type">
      <title>Отправка заявки</title>
    </head>
    <body>
    <form action="post.php" method="post">
      <table align="center" border="0">
        <tbody>
          <tr>
            <td align="left">Название команды:</td>
            <td align="left"><input name="namecomand"></td>
          </tr>
          <tr>
            <td align="left">Руководитель:</td>
            <td align="left"><input name="name"></td>
          </tr>
          <tr>
            <td align="left">Описание задачи:</td>
            <td align="left"><textarea cols="50"
     rows="3" name="opisanie"></textarea></td>
          </tr>
          <tr>
            <td align="left">Выбор проектов:</td>
            <td align="left">
            <input name="option1" value="a1"
     type="checkbox">Вариант 1<br>
            <input name="option2" value="a2"
     type="checkbox">Вариант 2<br>
            <input name="option3" value="a3"
     type="checkbox">Вариант 3
            </td>
          </tr>
          <tr>
            <td></td>
            <td><input name="ok" value="Отправить заявку"
     type="submit"></td>
          </tr>
        </tbody>
      </table>
    </form>
    </body>
    </html>
    P.S. Скрипт post.php выполнял запрос к БД. Но в данном случае нужно, чтобы этот скрипт отправлял данные в .txt. И вопрос: подскажите, что это за скрипт.
    Была мысль использовать функцию fwrite(), но она пишет все в один файл... что не есть удобно.
     
    #3 alpotemkin, 25 Nov 2009
    Last edited: 25 Nov 2009
  4. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    568
    Likes Received:
    86
    Reputations:
    11
    post.php

    PHP:
    <?
    $namecommand=$_POST['namecomand'];
    $rukovod=$_POST['name'];
    $descr=$_POST['opisanie'];
    $project=$_POST['option'];

    $rand=rand();

    $handle fopen("zayavka$rand.txt""w+");
    foreach(
    $project as $option){
        
    $opt .=$option."\r\n";
    }

    fwrite($handle$namecommand."\r\n");
    fwrite($handle$rukovod."\r\n");
    fwrite($handle$descr."\r\n");
    fwrite($handle$opt."\r\n");
    fclose($handle);
    ?>
    сама страница с формой

    PHP:
    <html>
    <
    head>
      <
    meta content="text/html; charset=Windows-1251"
     
    http-equiv="content-type">
      <
    title>Отправка заявки</title>
    </
    head>
    <
    body>
    <
    form action="post.php" method="post">
      <
    table align="center" border="0">
        <
    tbody>
          <
    tr>
            <
    td align="left">Название команды:</td>
            <
    td align="left"><input name="namecomand"></td>
          </
    tr>
          <
    tr>
            <
    td align="left">Руководитель:</td>
            <
    td align="left"><input name="name"></td>
          </
    tr>
          <
    tr>
            <
    td align="left">Описание задачи:</td>
            <
    td align="left"><textarea cols="50"
     
    rows="3" name="opisanie"></textarea></td>
          </
    tr>
          <
    tr>
            <
    td align="left">Выбор проектов:</td>
            <
    td align="left">
            <
    input name="option[]" value="a1"
     
    type="checkbox">Вариант 1<br>
            <
    input name="option[]" value="a2"
     
    type="checkbox">Вариант 2<br>
            <
    input name="option[]" value="a3"
     
    type="checkbox">Вариант 3
            
    </td>
          </
    tr>
          <
    tr>
            <
    td></td>
            <
    td><input name="ok" value="Отправить заявку"
     
    type="submit"></td>
          </
    tr>
        </
    tbody>
      </
    table>
    </
    form>
    </
    body>
    </
    html>
    сделано без проверки полей и т.п.
     
  5. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    svesve, зачем 4 раза вызывать одну и ту же функцию, если можно сделать все аккуратнее )?
    Сейчас свой вариант напишу :)
     
  6. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    568
    Likes Received:
    86
    Reputations:
    11
    ну можно и 1 раз вызвать, не спорю.
    сложить все данные в одну переменную и записать.
     
  7. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    svesve, mailbrush, про такой способ использования fwrite() я даже и не знал... Я почему-то думал, что эта функция служит только для записи данных из форм в один текстовый файл.
    mailbrush, был бы рад увидеть твой вариант скрипта. :)
     
    #7 alpotemkin, 25 Nov 2009
    Last edited: 25 Nov 2009
  8. Gray_f0x

    Gray_f0x Elder - Старейшина

    Joined:
    31 May 2007
    Messages:
    161
    Likes Received:
    84
    Reputations:
    12
    А на мой взгляд давать имени файла имя со случайным числом - это глупо, лучше уж время и дату.
     
  9. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    568
    Likes Received:
    86
    Reputations:
    11
    время и дату я хотел сделать
    но у тебя получиться файл час-минута-секунда-число-день-месяц-год

    ибо если ты возьмешь час-минута или т.п. то файл перезапишеться )

    и получается длинное имя файла, но это уже дело вкуса
     
  10. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Ждите все, у меня он будет по id файлы писать)
     
  11. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    index.html
    PHP:
    <html
    <
    head
      <
    meta content="text/html; charset=Windows-1251" 
     
    http-equiv="content-type"/> 
      <
    title>Отправка заявки</title
    </
    head
    <
    body
    <
    form action="write.php" method="post"
      <
    table align="center" border="0"
        <
    tbody
          <
    tr
            <
    td align="left">Название команды:</td
            <
    td align="left"><input name="namecomand"/></td
          </
    tr
          <
    tr
            <
    td align="left">Руководитель:</td
            <
    td align="left"><input name="name"/></td
          </
    tr
          <
    tr
            <
    td align="left">Описание задачи:</td
            <
    td align="left"><textarea cols="50" 
     
    rows="3" name="opisanie"></textarea></td
          </
    tr
          <
    tr
            <
    td align="left">Выбор проектов:</td
            <
    td align="left"
            <
    input name="option[]"
     
    type="checkbox" value="Вариант 1" />Вариант 1<br/> 
            <
    input name="option[]" value="Вариант 2"
     
    type="checkbox"/>Вариант 2<br/> 
            <
    input name="option[]" value="Вариант 3"
     
    type="checkbox"/>Вариант 3 
            
    </td
          </
    tr
          <
    tr
            <
    td></td
            <
    td><input name="ok" value="Отправить заявку" 
     
    type="submit"/></td
          </
    tr
        </
    tbody
      </
    table
    </
    form
    </
    body
    </
    html
    write.php
    PHP:
    <?php

    $settings
    ['dir'] = 'query'//папка для сохранения, в качестве текущей - "."
    $settings['filename'] = 'query_%n.txt'//имя файла, в качестве макроса %n (порядковый номер)
    $settings['ids'][0] = '500'//стартовый номер

    //проверка на существование папки
    if (!is_dir($settings['dir']))
        if (
    mkdir($settings['dir']))
            echo 
    '+ Папка для записи создана!';
        else
            echo 
    '- Папка для записи не создана!';

    chdir($settings['dir']);

    //процедура получения id
    if ($dir opendir('.'))
        while (
    false !== ($file readdir($dir)))
            if (
    $file != "." && $file != "..")
                if (
    preg_match('/' str_replace('%n''(\d+)'$settings['filename']) . '/'$file,
                    
    $names))
                    
    $settings['ids'][] = $names[1];
    closedir($dir);


    $settings['next_id'] = max($settings['ids']) + 1;
    $settings['next_filename'] = str_replace('%n'$settings['next_id'], $settings['filename']);
    $settings['text'] = 'Название команды: ' $_POST['namecomand'] . "\r\n" .
        
    'Руководитель: ' $_POST['name'] . "\r\n" 'Описание задачи: ' $_POST['opisanie'] .
        
    "\r\n" 'Проэкты: ' "\r\n* " implode("\r\n* "$_POST['option']);

    $fp fopen($settings['next_filename'], 'w+');
    if (
    fwrite($fp$settings['text']))
        echo 
    'Данные добавлены!';
    else
        echo 
    'Данные не добавлены!';
    fclose($fp);

    ?>
     
  12. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Задача решена, всем спасибо за помощь. А насчет случайных цифр в имени файла - я просто заменил на $rand=date("d.m.Y-G.i.s");
    Не думаю, что в одну и ту же секунду пойдут 2 заявки... :)

    mailbrush, а твой вариант тоже хорош... буду тестировать. :)
     
    #12 alpotemkin, 25 Nov 2009
    Last edited: 25 Nov 2009