PDA

Просмотр полной версии : Скрипт приема заявок


alpotemkin
25.11.2009, 16:14
Доброго времени суток!

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

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

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

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

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

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

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

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

b3
25.11.2009, 16:41
Нарисуй в фотошопе или выложи конкретно Техническое Задание, возможно ктото напишет бесплатно, то что ты просиш не сложно, поэтому может кто откликнется

alpotemkin
25.11.2009, 17:44
Как же должно выглядеть техническое задание? Я вроде все описал... В фотошопе делать нет смысла, потому что мне нужен просто скрипт, а вписать его в шаблон я уже и сам смогу. :)

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

<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(), но она пишет все в один файл... что не есть удобно.

svesve
25.11.2009, 18:09
post.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);
?>


сама страница с формой

<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>

сделано без проверки полей и т.п.

mailbrush
25.11.2009, 18:26
svesve, зачем 4 раза вызывать одну и ту же функцию, если можно сделать все аккуратнее )?
Сейчас свой вариант напишу :)

svesve
25.11.2009, 18:37
svesve, зачем 4 раза вызывать одну и ту же функцию, если можно сделать все аккуратнее )?
Сейчас свой вариант напишу :)

ну можно и 1 раз вызвать, не спорю.
сложить все данные в одну переменную и записать.

alpotemkin
25.11.2009, 18:39
svesve, mailbrush, про такой способ использования fwrite() я даже и не знал... Я почему-то думал, что эта функция служит только для записи данных из форм в один текстовый файл.
mailbrush, был бы рад увидеть твой вариант скрипта. :)

Gray_f0x
25.11.2009, 18:39
А на мой взгляд давать имени файла имя со случайным числом - это глупо, лучше уж время и дату.

svesve
25.11.2009, 18:41
А на мой взгляд давать имени файла имя со случайным числом - это глупо, лучше уж время и дату.

время и дату я хотел сделать
но у тебя получиться файл час-минута-секунда-число-день-месяц-год

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

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

mailbrush
25.11.2009, 18:52
Ждите все, у меня он будет по id файлы писать)

mailbrush
25.11.2009, 19:20
index.html
<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

$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);

?>

alpotemkin
25.11.2009, 19:56
Задача решена, всем спасибо за помощь. А насчет случайных цифр в имени файла - я просто заменил на $rand=date("d.m.Y-G.i.s");
Не думаю, что в одну и ту же секунду пойдут 2 заявки... :)

mailbrush, а твой вариант тоже хорош... буду тестировать. :)