我目前正在进行一个项目,用户从选择框中选择一个选项并提交一个表单,然后由PHP处理该表单,PHP代码确定选择框的值是什么,并根据该值执行一些操作。
我的选择框叫做combined_group
,有两个选择值:philharmonic_orchestra
和symphony_orchestra
。
我是这样检查选中的值的:
if($_POST['combined_group'] == "philharmonic_orchestra"){
$_SESSION['semesterprice'] = "170";
$_SESSION['fullprice'] = "330";
}
if($_POST['combined_group'] == "symphony_orchestra"){
$_SESSION['semesterprice'] = "275";
$_SESSION['fullprice'] = "530";
}
但是当PHP运行这段代码时,没有选择if
语句。我知道$_POST['combined_group']
的值,实际上是这两个值中的任意一个,只是PHP因为某种原因没有把它捡起来。
有人愿意帮忙吗?
编辑:我的HTML表单代码如下
<select name="combined_group" class="OBJ-1">
<option value="" selected="">Select One</option>
<option value="philharmonic_orchestra">Philharmonic Orchestra</option>
<option value="symphony_orchestra ">Symphony Orchestra</option>
</select>
客户端
<select name="combined_group">
<option value="">Select an option</option>
<option value="philharmonic_orchestra">Philharmonic Orchestra</option>
<option value="symphony_orchestra">Symphony Orchestra</option>
</select>
服务器端if (! isset($_POST["combined_group"]))
{
exit('not set');
}
if (trim($_POST["combined_group"]) == '')
{
exit('not selected');
}
if (trim($_POST["combined_group"]) == 'philharmonic_orchestra')
{
//business logic for 'philharmonic_orchestra'
}
else
{
//business logic for 'symphony_orchestra'
}
很可能是错误的HTML语法。检查选项项是否有value属性:
<option value="...">...</option>
你的条件语句失败的原因是你的选项值中有一个空格。
<option value="symphony_orchestra ">
^ right there
你需要做的是删除它:
<option value="symphony_orchestra">
^ deleted space
技术旁注:
你的条件语句是:
if($_POST['combined_group'] == "symphony_orchestra ")
^ notice the space
加上引号前的空格,就可以了。
- 引号之间的任何元素都被认为是元素值的一部分。