|
|
|
| Файл form.php для обработки формы (например гостевая книга).
Я хочу, чтобы , если не введены "имя" и/или "EMail", рядом с соответствующим полем формы появлялся комментарий типа " * Вы забыли ввести .....".
Так я это делаю:
<?PHP
$post_date = date("F d, Y, H:i");
// Определяем форму через переменную $form
$form = "<form action=\"form.php\" method=\"post\">
<input type=\"hidden\" name=\"seenform\" value=\"Y\">
<table align=\"center\">
<tr><td align=\"left\"><font color=\"#006666\"><b>Имя: </b></font></td>
</tr>
<tr><td align=\"left\"><input type=\"text\" name=\"name\" size=\"25\" maxlength=\"45\" value=$name>
<font color=\"red\">$error_msg_name</font>
</td>
</tr>
<tr><td align=\"left\"><font color=\"#006666\"><b>Email: </b></font></td>
</tr>
<tr><td align=\"left\"><input type=\"text\" name=\"email\" size=\"25\" maxlength=\"45\" value=$email>
<font color=\"red\">$error_msg_email</font></td>
</tr>
<tr><td align=\"left\"><font color=\"#006666\"><b>Коментарий: </b></font></td>
</tr>
<tr><td align=\"left\"><textarea name=\"comments\" rows=\"4\" cols=\"55\"></textarea></td>
</tr>
<tr><td align=\"left\"><input type=\"submit\" value=\"ОТПРАВИТЬ\"></td>
</tr>
</table>
</form>";
if (!$seenform) :
print "<tr><td><font color=\"#006666\" size=\"4\"><center>Нам очень важно знать Ваше мнение о нашем сайте.<br>
Добавьте, пожалуйста, Ваши коментарии.<br>";
print $form;
// Форма уже отображалась - проверяем введено ли имя и EMail.
else :
$error_flag = "n";
// Убедиться в том. что поле имени содержит информацию
if ($name == "") :
$error_msg_name = "* Вы забыли внести Ваше Имя!";
$error_flag = "y";
endif;
// Убедиться в том, что поле адреса содержит информацию
if ($email == "") :
$error_msg_email = "* Вы забыли внести Ваш E-Mail!";
$error_flag = "y";
endif;
// Если флаг ошибки $error_flag установлен.
// заново отобразить форму
if ($error_flag == "y") :
print $form;
else :
// Обработать данные пользователя
// каким способом не суть проблемы, например добавляются в файл гостевой книги,
// .............................
// .............................
// и посылаем пользователю уведомление по почте
$msg = "Уважаемый $name,
Cегодня $post_date,
Ваши Коментарии:
$comments
Добавлены в Гостевую Книгу сайта http:/comp4u.h12.ru
Спасибо за интерес, проявленный к нашему сайту.
Администратор comp4u@inbox.ru";
mail($email, "Guest Book", $msg, "From: Comp4U@Inbox.ru") or die("Could not send email!");
print "<tr><td><h3>Ваши коментарии добавлены.</h3></td></tr>";
endif;
endif;
?>
|
Делать то я делаю, да только не выводится ничего.
Причем, если перед print $form; определить переменные $error_msg_name и $error_msg_email определить явным образом
$error_msg_name = "* Вы забыли внести Ваше Имя!";
$error_msg_email = "* Вы забыли внести Ваш E-Mail!";
print $form;
|
коментарии появляются в нужном месте.
Может быть поможете разобраться.
P.S. Кстати, если форму создать не через переменную $form, а прописать в явном виде, один раз без коментариев, а после проверки с переменными $error_msg_name и $error_msg_email, то все работает | |
|
|
|
|
|
|
|
для: and_alex
(30.11.2004 в 20:09)
| | Лучше заключи форму в функцию:
function form()
{?>
...
<?}
| За место многоточия код формы.
А потом вызови форму в нужном месте form(); | |
|
|
|
|
|
|
|
для: BAHO
(30.11.2004 в 20:34)
| | Поскольку я в стадии начала изучения PHP, хотелось бы понять почему так как у меня не работает.
А к изучению функций я еще серьезно не приступал...
Теперь будет повод попробовать ;)
За ответ, Спасибо, ВАНО. | |
|
|
|
|
|
|
|
для: and_alex
(30.11.2004 в 20:09)
| | Так неполучится, так как PHP - это интерпретатор и встретив в начале скрипта переменную $form он подставит в неё значение $error_msg_name, который на этот момент будет равно пустой строке... Можно поступить так как это сделано в прикреплённом к этому сообщению файле. | |
|
|
|
|
|
|
|
для: cheops
(30.11.2004 в 20:37)
| | Разъяснение понял, спасибо, Хеопс.
Единственное, уточни, пож., внутри переменной $form error_msg_... должны входить как строки, а не как переменные, у то у тебя в листинге один раз так, другой раз с $ | |
|
|
|
|
|
|
|
для: and_alex
(30.11.2004 в 21:22)
| | Нет... именно так как приведено, дело в том, что строка
<?php
print str_replace("error_msg_name", $error_msg_name, $form);
?>
|
ищет и заменяет в переменной $form, подстроку "error_msg_name" на значение переменной $error_msg_name...
PS С синтаксисом этой функции можно ознакомится по ссылке
http://www.softtime.ru/dic/id_dic=53&id_group=1 | |
|
|
|
|
|
|
|
для: cheops
(30.11.2004 в 20:37)
| | Разобрался.
Оди раз так
print str_replace("error_msg_email", "", str_replace("error_msg_name", "", $form));
|
После проверки, так
print str_replace("error_msg_email", $error_msg_email, str_replace("error_msg_name", $error_msg_name, $form));
|
Все работает, Ура
Спасибо, Хеопс, еще раз большое
Спасибо всем.............
Ушел изучать функции ;-))
P.S. Кстати посоветуйте какой-нибудь не дорогой хостиг с поддержкой доменов в нац. зоне co.il , у меня сейчас сайт на h12.ru и я так и не добился от администрации, почему функция mail() второй раз не отрабатывает | |
|
|
|
|
|
|
|
для: and_alex
(30.11.2004 в 21:30)
| | Хм... по хостингу у нас не так много тем было, вот пожалуй наиболее интересная
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=307
Но там помоему нет ответа на ваш вопрос... | |
|
|
|