2011-09-02 142 views
0

我正在使用一些验证规则的PHP窗体。PHP窗体错误验证

如果某些字段留空即需要表单将报告和错误消息并要求用户填写该字段。

表单当前保留$ _POST数据的值,以便在发生错误时保留字段中的数据。

我有两个字段(下拉列表)有填充数据库中的数据的问题。 如果我完成这些字段,但其他地方出现错误,则表单显示下拉列表中的值,但是当我纠正错误并尝试提交表单时,它会告诉我下拉列表字段为空。

这里是他们

<! Drop Down Menu to get student names from database !> 
<SELECT NAME=studentName > 
<OPTION VALUE=0 selected="selected" > 
<?php if(isset($_POST['studentName'])) echo $_POST['studentName'];?> 
<?php echo $options1?> 
</SELECT> 

代码的任何想法就是为什么这是怎么回事?

+0

什么是<!下拉菜单从数据库中获取学生姓名> ...? – Smar

回答

1

对于初学者,<选项值= 0 selected =“selected”>意味着选项0将始终被选中。

你可以做类似下面,原谅我,如果这个片段中有错误,但它应该给你的,你怎么能实现你想要的总体思路:

<?php 
    $myOptions = array(
     '0' => ' --- nothing selected ---', 
     '1' => 'Apples', 
     '2' => 'Bananas', 
     // ... 
    ); 
?> 
<select name="studentName"> 
    <? php 
    foreach($myOptions as $key => $value) { 
     $selected = isset($_POST['theOption']) && $_POST['theOption'] == $key ? 'selected="selected"' : ""; 
     echo '<option value="' . $key . '" '. $selected . '>' . $value . "</option>"; 
    } 
    ?> 
</select> 

您可以清除上面的有些使用替代PHP语法:

http://php.net/manual/en/control-structures.alternative-syntax.php

这不是你的错误的一部分,但只是一个好习惯的考虑,一些你的HTML标签和属性都大写,并且它的共同时下使用降低案件。这种方式更标准。

+0

感谢您的意见。我会尝试这个,看看我如何继续。 PS:是的,我知道关于代码看起来很糟糕,但是在我做家务之前就集中精力让它工作 – Mattrsa

1

你不应该回声$_POST['studentName'];您应该根据每个选项的值(它应该是PHP中的数组,并将其转换为foreach循环中的<option> s列表)的值,并在匹配时设置selected属性。

在旁注中,您的HTML无效;一些属性没有被引用,并且评论应该在<!-- ... -->中,而不是<! ... !>