ExBB Community » » PHP/Perl » Форма для вывода информации по шаблону

Страниц (2): [1] 2 »
 

1. Defenderyk - 13 мая 2009 — 20:23 - перейти к сообщению
Как сделать нечто подобное http://www.e1.ru/auto/warrant/
т.е заполняешь форму, а он формирует готовую страницу
2. Furax - 14 мая 2009 — 02:37 - перейти к сообщению
А в чём, собственно, проблема? В начале проверяем заданность всех нужных POST-переменных, если они заданы - выводим текст, подставляя их значения (или вычисляя что-то по их значениям). Довольно стандартная задача, вроде бы...
3. Defenderyk - 14 мая 2009 — 07:37 - перейти к сообщению
На примере одного поля можешь показать? а далее остальные я сам добавлю
4. Furax - 14 мая 2009 — 09:55 - перейти к сообщению
CODE:
<?php

if (!isSet($_POST['name']) || !isSet($_POST['year']))
{
header('Location: страница_с_формой.html');
return;
}

?><html>
<head>
...
<body>
<p>Я, <?php echo $_POST['name']; ?>, родившийся в <?php echo $_POST['year']; ?> году и проживающий ныне в Зимбабве...
5. Defenderyk - 23 мая 2009 — 20:59 - перейти к сообщению
делал по примеру, но вместо html поставил php

переменные не передаются почему то (*вернее значит есть ошибка).

но я смог сделать кнопку отправить, и он мне выдает на той же странице заполненную форму.

как сделать, чтобы ту форму он выдал не на этой же странице, а на отдельной, новой.

пробовал через
CODE:
{
header('Location: страница_с_формой.html');
return;
}


но переменные не передает

код в который забиваю данные пример такой:

CODE:
<td width='200' class='tbl'>Город, населенный пункт:</td>
<td class='tbl'><input type='text' name='city' value='".$_POST['city']."' maxlength='50' class='textbox' style='width: 200px;'><br>г. Ульяновск</td>
</tr>

<tr>
<td width='200' class='tbl'>Республика, Край, Область:</td>
<td class='tbl'><input type='text' name='region' value='".$_POST['region']."' maxlength='50' class='textbox' style='width: 200px;'><br>Ульяновская область</td>
</tr>


а вывод такой пробовал:
CODE:

<p align='right'><font size=-1><?php $_POST['city'] ?>, <?php $_POST['region'] ?><br>


или такой:
CODE:

<p align='right'><font size=-1><?php echo $_POST['city']; ?>, <?php echo $_POST['region']; ?><br>


или такой, который выводит на тойже странице:
CODE:

<p align='right'><font size=-1>".$_POST['city'].", ".$_POST['region']."<br>
6. Furax - 24 мая 2009 — 05:27 - перейти к сообщению
Должно быть 2 страницы: первая (form.html) - с формой, вторая (make.php) - с выводом результата. (Хотя при желании можно их совместить.)

На form.html должна быть форма, отправляющаяся методом POST на make.php:
CODE:
<form action="make.php" method="POST">
Имя: <input type="text" name="name"><br>
Год: <input type="text" name="year"><br>
...
</form>


А уж make.php заботится о формировании страницы (см. мой предыдущий пост). if лишь проверяет, все ли POST-переменные заданы; если не все, он перенаправляет на form.html.
7. Defenderyk - 24 мая 2009 — 07:36 - перейти к сообщению
да, я и делал две страницы. еще раз поэкспериментирую. спс.

да, работает, но теперь перестала работать кнопка предпросмотра. теперь обе кнопки перенаправляют на новую страницу
8. Furax - 24 мая 2009 — 12:36 - перейти к сообщению
А я не знаю, как у Тебя сделана кнопка предпросмотра, поэтому ничего сказать не могу... Огорчение
9. Defenderyk - 25 мая 2009 — 18:02 - перейти к сообщению
Вот так:
CODE:
<input type='submit' name='do_submit' value='Просмотр' class='button'>
<input type='submit' name='submit' value='Отправить' class='button'>


При нажатии на просмотр выполняется

CODE:

if (isset($_POST['do_submit'])) {
echo "<table width='500' border='1' cellspacing='0' cellpadding='0'>
................


но если я ставлю

CODE:

{
header('Location: страница_с_формой.html');
return;
}
<form action="make.php" method="POST">


то предпросмотр тоже перекидывает на эту страницу
10. Furax - 26 мая 2009 — 10:29 - перейти к сообщению
Так... Если хочешь делать таким образом предпросмотр (хотя я бы его сделал на JavaScriptе...), тогда, действительно, имеет смысл объединить страницы в одну. Это можно сделать так:
CODE:
<html>
<head>
...
<body>
<?php
$result = '';

$name = '';
$province_index = '';
...

if (isSet($_POST['name']) && isSet($_POST['province']) && ...)//Если заданы все POST-переменные
{
$name = htmlSpecialChars($_POST['name']);
$province_index = htmlSpecialChars($_POST['province_index']);
...

$result = <<< EOF //Отформатированный ответ - пока в переменной
<h1>Заявление</h1>
<p>Я, $name, рождённый в провинции Зимбабве № $province_index...</p>
EOF;
}

if (isSet($_POST['submit']) && $result) //Если была нажата кнопка "Отправить" и все данные переданы - нужно вывести только результат
echo $result;
else //Либо ещё не введены данные, либо нажата кнопка "Предпросмотр"
{
if ($result) //Данные переданы => предпросмотр
echo "<h1>Предпросмотр</h1>$result"; //Отображение предпросмотра

//Далее - форма
echo <<< EOF
<h1>Форма</h1>
<form action="этаСтраница.php" method="POST">
<p>Ваше имя: <input type="text" name="name" value="$name"></p>
<p>Номер провинции Зимбабве, в которой Вы родились: <input type="text" name="province_index" value="$province_index"></p>
...
<input type="submit" name="submit" value="Готово">
<input type="submit" name="preview" value="Предпросмотр">
</form>
EOF;
}
?>
</body>
</html>
11. Defenderyk - 26 мая 2009 — 13:16 - перейти к сообщению
в одной странице я делал, но мне надо, чтобы именно в другой открывалось.

Возможно кстати как то передать данные параметром?:

CODE:
windows.open('1111.php' '', '');
12. Furax - 27 мая 2009 — 06:23 - перейти к сообщению
POST-параметры открытием нового окна не передашь, а в GET сваливать данные целой анкеты нехорошо. Проще написать target="_blank" для формы.
13. Defenderyk - 27 мая 2009 — 17:33 - перейти к сообщению
Вот так форму сделал, убрал лишние переменные, оставил эти некоторые для примера:

CODE:

<?php

// ~~~ Отправка ~~~ //
if (isset($_POST['submit'])) {

$error = "";
$mailname = $userdata['user_name'];
$email = $userdata['user_email'];
$subject = "Доверенность на управление ТС";
$message = "Доверенность на управление ТС
Город, населенный пункт: ".$_POST['city']."
Республика, Край, Область: ".$_POST['region']."
Cрок действия доверенности: ".$_POST['start_delta_val']." ".$_POST['start_delta_type']."
Доверенность дествительна с: ".$_POST['from_day']." ".$_POST['from_month']." ".$_POST['from_year'];


if (!$error) {


//{
//header('Location: 1111.php');
//return;
//}

echo "
Ваша форма отправлена";

} else {
opentable($locale['400']);
echo "<center><br>\nВаша форма не отправлена по следующим причинам:<br><br>\n$error<br>\nПопробуйте еще раз.</center><br>\n";
closetable();
}

// ~~~ Отправка ~~~ //

} else {

opentable("Доверенность на управление ТС");

// ~~~ Пред. просмотр ~~~ //

if (isset($_POST['do_submit'])) {
echo "<table width='500' border='1' cellspacing='0' cellpadding='0'>
<tr>
<td>
<table width='100%' border='0' cellspacing='0' cellpadding='1' bgcolor='#FFFFFF'>
<tr>
<td>
<table width='90%%' border='0' cellspacing='0' cellpadding='1' align='center'>
<tr>
<td><br> <img src='images/ullogo.gif' align='left'>
<p align='right'><b><font size=-1>Доверенность</b><br>
простая письменная форма</p>
<p align='right'><font size=-1>".$_POST['city'].", ".$_POST['region']."<br>
".$_POST['from_day']." ".$_POST['from_month']." ".$_POST['from_year']."
</p>
</td>
</tr>
</table>";
echo "
<table width='90%' border='0' cellspacing='0' cellpadding='0' align='center'>
<tr>
";

}
// ~~~ Пред. просмотр ~~~ //

echo "Заполните все поля данной формы для получения простой рукописной доверенности на управление транспортным средством

<br><br>
<form name='userform' method='post' action='".FUSION_SELF."' onSubmit='return validateForm(this);'>";

echo "<table align='center' cellpadding='0' cellspacing='0' class='tbl'>
<tr>
<td width='200' class='tbl'>Город, населенный пункт:</td>
<td class='tbl'><input type='text' name='city' value='".$_POST['city']."' maxlength='50' class='textbox' style='width: 200px;'><br>г. Ульяновск</td>
</tr>

<tr>
<td width='200' class='tbl'>Республика, Край, Область:</td>
<td class='tbl'><input type='text' name='region' value='".$_POST['region']."' maxlength='50' class='textbox' style='width: 200px;'><br>Ульяновская область</td>
</tr>



<tr>
<td width='200' class='tbl'>Дата выдачи</td>
<td class='tbl'>
<select name='tp_day' class='textbox'>";
for ($i=1;$i<=31;$i++) echo "<option".(isset($tp_day) && $tp_day == $i ? " selected" : "").">$i</option>\n";
echo "</select>

<select name='tp_month' class='textbox'>
<option value='января'".($tp_month==января?" selected='selected'":"").">января</option>
<option value='февраля'".($tp_month==февраля?" selected='selected'":"").">февраля</option>
<option value='марта'".($tp_month==марта?" selected='selected'":"").">марта</option>
<option value='апреля'".($tp_month==апреля?" selected='selected'":"").">апреля</option>
<option value='мая'".($tp_month==мая?" selected='selected'":"").">мая</option>
<option value='июня'".($tp_month==июня?" selected='selected'":"").">июня</option>
<option value='июля'".($tp_month==июля?" selected='selected'":"").">июля</option>
<option value='августа'".($tp_month==августа?" selected='selected'":"").">августа</option>
<option value='сентября'".($tp_month==сентября?" selected='selected'":"").">сентября</option>
<option value='октября'".($tp_month==октября?" selected='selected'":"").">октября</option>
<option value='ноября'".($tp_month==ноября?" selected='selected'":"").">ноября</option>
<option value='декабря'".($tp_month==декабря?" selected='selected'":"").">декабря</option>
</select>

<select name='tp_year' class='textbox'>";
for ($i=1950;$i<=2014;$i++) echo "<option".(isset($tp_year) && $tp_year == $i ? " selected" : "").">$i</option>\n";
echo "</select>
</td>
</tr>

<tr>
<td class='tbl' colspan='2' align='center'><hr width='450'></td>
</tr>

<tr>
<td width='200' class='tbl'>Ф.И.О. владельца:</td>
<td class='tbl'><input type='text' name='u_name' value='".$_POST['u_name']."' maxlength='50' class='textbox' style='width: 200px;'><br>Сергеев Николай Юрьевич</td>
</tr>



<tr>
<td width='200' class='tbl'>Cрок действия доверенности:</td>
<td class='tbl'>
<select name='start_delta_val' class='textbox'>";
for ($i=1;$i<=31;$i++) echo "<option".(isset($start_delta_val) && $start_delta_val == $i ? " selected" : "").">$i</option>\n";
echo "</select>


(Добавление)
CODE:
<select name='start_delta_type' class='textbox'>
<option value='день' selected>день</option>
<option value='месяц'>месяц</option>
<option value='год'>год</option>
</select>
(не более трех лет)</td>
</tr>

<tr>
<td width='200' class='tbl'>Доверенность дествительна с:</td>
<td class='tbl'>
<select name='from_day' class='textbox'>";
for ($i=1;$i<=31;$i++) echo "<option".(isset($from_day) && $from_day == $i ? " selected" : "").">$i</option>\n";
echo "</select>

<select name='from_month' class='textbox'>
<option value='января'".($from_month==января?" selected='selected'":"").">января</option>
<option value='февраля'".($from_month==февраля?" selected='selected'":"").">февраля</option>
<option value='марта'".($from_month==марта?" selected='selected'":"").">марта</option>
<option value='апреля'".($from_month==апреля?" selected='selected'":"").">апреля</option>
<option value='мая'".($from_month==мая?" selected='selected'":"").">мая</option>
<option value='июня'".($from_month==июня?" selected='selected'":"").">июня</option>
<option value='июля'".($from_month==июля?" selected='selected'":"").">июля</option>
<option value='августа'".($from_month==августа?" selected='selected'":"").">августа</option>
<option value='сентября'".($from_month==сентября?" selected='selected'":"").">сентября</option>
<option value='октября'".($from_month==октября?" selected='selected'":"").">октября</option>
<option value='ноября'".($from_month==ноября?" selected='selected'":"").">ноября</option>
<option value='декабря'".($from_month==декабря?" selected='selected'":"").">декабря</option>
</select>

<select name='from_year' class='textbox'>";
for ($i=2000;$i<=2014;$i++) echo "<option".(isset($from_year) && $from_year == $i ? " selected" : "").">$i</option>\n";
echo "</select>
</td>
</tr>

<tr>
<td class='tbl' colspan='2' align='center'><hr width='450'></td>
</tr>

<tr>
<td align='center' colspan='2'>
<input type='submit' name='do_submit' value='Просмотр' class='button'>
<input type='submit' name='submit' value='Отправить' class='button'>
</td>
</tr>
</table>
</form>\n";
closetable();
}

} else {

opentable("Доверенность на управление ТС");
echo "<table align='center' cellpadding='0' cellspacing='0' class='tbl'>\n";
echo "<tr>\n";
echo "<td align='center' class='tbl'>Форма доступна только зарегистрированным пользователям.</td>\n";
echo "</tr>\n";
echo "</table>\n";
closetable();

}

echo "<script type='text/javascript'>
function validateForm(frm) {
if (
frm.city.value==\"\" || frm.region.value==\"\" || frm.ts_model.value==\"\" || frm.ts_number.value==\"\" || frm.ts_color.value==\"\" || frm.ts_vin.value==\"\" || frm.ts_year.value==\"\" || frm.ts_e_numbe.value==\"\" || frm.ts_sh_number.value==\"\" || frm.ts_k_number.value==\"\" || frm.pts_ser.value==\"\" || frm.pts_num.value==\"\" || frm.tp_ser.value==\"\" || frm.tp_num.value==\"\" || frm.tp_make_in.value==\"\" || frm.tp_month.value==\"\" || frm.tp_year.value==\"\" || frm.u_name.value==\"\" || frm.u_address.value==\"\" || frm.u_p_ser.value==\"\" || frm.u_p_num.value==\"\" || frm.u_p_make_in.value==\"\" || frm.d_name.value==\"\" || frm.d_address.value==\"\" || frm.start_delta_val.value==\"\" || frm.start_delta_type.value==\"\" || frm.from_day.value==\"\" || frm.from_month.value==\"\" || frm.from_year.value==\"\") {
alert(\"Пожалуйста, заполните форму.\"); return false;
}
}
</script>\n";

?>



т.е есть предпросмотр. По нажатию на кнопку отправить, отправляет на почту, но еще бы хотелось, чтобы данные передавались в страницу 1111.php

Если можешь подмочь, то подмоги плиз Закатив глазки
14. Defenderyk - 28 мая 2009 — 10:04 - перейти к сообщению
Или, может проще будет. После нажатия на отправить у меня формируется заполненная страница. А как теперь по нажатию на кнопку под этой страницей, открыть ее в новом окне такую же заполненную?
15. Furax - 30 мая 2009 — 03:52 - перейти к сообщению
Можно вот так:

CODE:
<script type="text/javascript">
function formToBlank(Form)
{
var oldAction = Form.action;

Form.action = 'файл_готовящий_заполненный_текст_в_новом_окне.php';
Form.target='_blank';

setTimeout(function() { Form.action=oldAction; Form.target='_self'; }, 1000);
}
</script>
...
<form action="этот_же_файл.php" method="POST" target="_self">
...
<input type="submit" name="preview" value="Предварительный просмотр в том же окне">
<input type="submit" name="newWindow" value="Результат в новом окне" onclick="formToBlank(this.form);">
</form>
Если нигде не ошибся, первый submit должен отправлять форму в том же окне на тот же файл, а второй - в новом на другой.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0199]     [ ]