使用php验证在表单重新加载时选择框值更改

时间:2013-10-02 11:28:27

标签: php html

我需要一个解决方案。在这里,我想验证表单元素。我用PHP做了但是我的问题在于点击提交按钮验证过程,但选择框值更改以选择部门。 例如,如果您只是单击“提交”按钮而不向id仅提供select dept..,则消息会显示输入studentid,但会在页面重新加载时再次选择框值更改为select dept ..

PHP:

if($_POST['submit']!='')
{
    $c=0;
    if($_POST['studid']=='' ) {
        $msg_id="Enter stud id";
        $c++;
    }
    if($_POST[studdept]=='') {
        $msg_dept="Enter stud dept";
        $c++;
    }
    if($c==0) {
        echo "form has been submitted..";
    }
}

HTML:

<form id="myform" action="" method="post">
    <table>
        <tr>
        <td> Studid: *</td> <td> <input type="text" name="studid" maxlength="10" value="<?=$_POST[studid]?>"> </td> <td> <?php echo $msg_id; ?> </td> </tr>
        <tr>
            <td> StudDept: *</td>
            <td>
                <select name="studdept">
                    <option value="" selected="selected" >select dept</option>
                    <option value="cse" >cse</option>
                    <option value="eee" >eee</option>
                    <option value="mech" >mech</option>
                    <option value="ece" >ece</option>
                </select>
            </td>
            <td><?php echo $msg_dept; ?> </td>
        </tr>
        <tr>
            <td><input type="submit" name="submit" value="submit"> </td>
        </tr>
    </table>
</form>

有人可以帮我吗?

提前致谢...

4 个答案:

答案 0 :(得分:2)

您必须通过循环生成<option></option>列表(如果您正在从数据库表中生成部门列表),您必须在其中放置您为第一个<option>对设置的条件。

或者您可以放置​​一个迂回操作员(如果您使用的是静态列表)。

<select name="studdept">
    <option value="none" <?php echo ($_REQUEST['studdept']=='none'?'selected="selected"'):'';?> >select dept</option>
    <option value="cse" <?php echo ($_REQUEST['studdept']=='cse'?'selected="selected"'):'';?> >cse</option>
    <option value="eee" <?php echo ($_REQUEST['studdept']=='eee'?'selected="selected"'):'';?> >eee</option>    
    <option value="mech" <?php echo ($_REQUEST['studdept']=='mech'?'selected="selected"'):'';?> >mech</option>
    <option value="ece" <?php echo ($_REQUEST['studdept']=='ece'?'selected="selected"');:''?> >ece</option>
</select>

使用$_REQUEST代替$_GET$_POST

答案 1 :(得分:0)

表单的方法是 POST ,您正在尝试使用 GET <? echo ($_GET['studdept'] == 'cse' ? 'selected="selected"' : '') ?>来获取部门。

无论如何,您需要改进HTML,以便检查是否选择了任何deptartment(而不仅仅是'cse')。 for / while循环将完成这项工作。

此外,我会将" "添加到帖子变量中,就像你在if($_POST['studid']=='' )中所做的那样(但你没有在if($_POST[studdept]=='')中)

答案 2 :(得分:0)

您指定将使用POST方法提交表单数据。

PHP执行此操作的方式是将所有“已发布”值存储到名为“$ _POST”的关联数组中。 请务必注意表单数据名称的名称,因为它们代表“$ _POST”关联数组中的键。

使用:$_POST['studdept']代替:$_GET['studdept']

答案 3 :(得分:0)

由于您使用方法POST发送数据,并且您正尝试使用$_GET['studdept']获取价值。

所以你有两种方法:

(1)只需将方法更改为GET
 (2)将$_GET['studdept']更改为$_POST['studdept']