1

我需要一个解决方案。在这里,我想验证表单元素。我用 PHP 做到了,但我的问题是单击提交按钮验证过程发生但选择框值更改为选择 dept。例如,如果您只是单击提交按钮而不给学生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

4 回答 4

2

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

或者您可以放置​​一个 Turnary Operator(如果您使用的是静态列表)。

<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改用$_GETor $_POST

于 2013-10-02T11:36:49.557 回答
0

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

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

此外,我会添加" "到 post 变量中,就像你在if($_POST['studid']=='' )(但你没有在if($_POST[studdept]=='')

于 2013-10-02T11:40:12.333 回答
0

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

PHP 这样做的方式是将所有“发布”的值存储到一个名为“$_POST”的关联数组中。请务必注意表单数据名称的名称,因为它们代表“$_POST”关联数组中的键。

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

于 2013-10-02T11:42:25.980 回答
0

因为您使用方法POST发送数据,并且您正在尝试使用$_GET['studdept'].

所以你有两种方法:

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

于 2013-10-02T11:45:51.187 回答