如果他们没有填写表单部分,我试图设置错误弹出。我点击提交时名称和电子邮件部分部分工作,但评论部分没有。我注意到当我开始输入评论部分时,它开始大约5个空格,因此看起来该字段中有一些东西。一旦我删除并提交表单,错误消息会出现在评论部分,而不是在字段右侧,如上面的2个字段?请帮忙吗?
<!DOCTYPE html>
<html>
<head>
<title>My Guestbook</title>
<style type="text/css">
.errors { color: ff0000; }
</style>
</head>
<body>
<?php /* Opening tag of php */
//initialize error array
$errors=array();
//main logic
if(isset($_REQUEST['submit'])){
checkForm();
}
else{
printForm();
}
//begin functions
function checkForm()
{
global $errors;
if($_POST[name] == "")
$errors['name']="<span class=\"errors\"><b>  Please, enter your Name!</span>";
if($_POST[email] == "")
$errors['email']="<span class=\"errors\"><b>  Please, enter your Email!</span>";
if($_POST[myComments] == "")
$errors['myComments']="<span class=\"errors\"><b>  Please, enter something! </span>";
if(count($errors) !=0)
printForm();
else
confirm();
} //end checkForm function
function confirm(){
print "<h2>Thank you for signing my guestbook</h2>";
print "<p>Name: ".$_POST['name'];
print "</p><p>Email: ".$_POST['email'];
print "</p><p>Comment: ".$_POST['myComments'];
print "</p><br />"; //Extra line break.
print "<em>Today is " . date('F jS, Y.')."</em><br />"; //Extra line break.
} //end confirm
function printForm()
{
global $errors;
$place = $_POST[place];
// My old code I am trying to combine
print <<< HERE
<h1>Please sign my guestbook.</h1>
<form method="POST" action="{$_SERVER['PHP_SELF']}">
<table>
<tr>
<td class=name </td>Name: <br />
<td><input type="text" name="name" id="name" value="{$_POST['name']}">
{$errors['name']}</td>
</tr>
<tr>
<td class=email</td>Email: <br />
<td><input type="text" name="email" id="email" value"{$_POST['email']}">
{$errors['email']}</td>
</tr>
<tr>
<td class=myComments</td>Comments:<br />
<td><textarea type="text" name="myComments" id="mycomments" rows="4" cols="40" value" {$_POST['myComments']}">
{$errors['myComments']}</textarea></td>
</tr>
<tr>
<td> </td>
<td><input type=submit name="submit" value="send"><input type="reset" name="clear" value=Clear> </td>
</tr>
</table>
</form>
<br>
HERE;
print "Today is " . date('F jS, Y.')."<br>"; //Date printed in page below form.
print "Form designed by Kevin O'Leary "."<br>"; //Date printed in page below form.
}
?>
</body>
</html>
答案 0 :(得分:0)
TextArea没有value
或type
属性(即使它确实存在,您在值之后也没有等号)。 TextArea和/ TextArea之间的任何空格(换行符,空格,制表符等)都会显示出来,所以不要在开始标记和结束标记之间换行。
您可能希望TextArea标记看起来像这样:
<textarea name="myComments" id="mycomments" rows="4" cols="40">{$_POST['myComments']}</textarea> {$errors['myComments']}
这会导致$_POST['myComments']
显示在TextArea中,而$errors['myComments']
显示在textarea的右侧(或者如果textarea太宽而导致它换行)
此外,您的电子邮件字段在值之后也没有等号。
有关textarea使用的更多信息,请查看此内容:https://developer.mozilla.org/en-US/docs/HTML/HTML_Elements/textarea