我需要一个解决方案。在这里,我想验证表单元素。我用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>
有人可以帮我吗?
提前致谢...
答案 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']
。