PHP自我处理表格

问题描述:

我想设置错误弹出,如果他们不填写表单部分。当我点击提交时,名称和电子邮件部分部分工作,但评论部分没有。我注意到,当我开始输入注释部分时,它开始大约5个空格,所以看起来好像有一些东西在现场。一旦我删除并提交表单,错误消息就会出现在注释部分,而不是像上面两个字段那样的字段右侧?请帮助?PHP自我处理表格

<!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>&nbsp Please, enter your Name!</span>"; 
    if($_POST[email] == "") 
     $errors['email']="<span class=\"errors\"><b>&nbsp Please, enter your Email!</span>"; 
    if($_POST[myComments] == "") 
     $errors['myComments']="<span class=\"errors\"><b>&nbsp 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>&nbsp;</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

你缺少=”“在围绕价值的文字区域,这是不是

文本区域不具有valuetype属性(即使它没有,你没有价值后有一个等号)。 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