我目前有一个名为" user.php"的页面,其中我有一个HTML表单,允许用户从营养相关信息列表中选择,以及一些处理输入并最终处理输入的PHP代码将它们存储到MySQL数据库中:
<form action="user.php" method="post">
......
<select class="sel-dropdown" name="nutri-info">
<option value="empty"></option>
<option value="<200"><200 cal</option>
<option value="200 - 399">200 - 399 cal</option>
<option value="400 - 599">400 - 599 cal</option>
<option value="600 - 799">600 - 799 cal</option>
<option value="800 - 999">800 - 999 cal</option>
<option value=">1000">> 1000 cal</option>
</select>
......
</form>
页面顶部的PHP如下所示。我尝试做的是将每个卡路里转换为一个数字,并将该数字存储到数据库中。
...
$nutrition = $_POST['nutri-info'];
switch($nutrition){
case "<200 cal":
$calories = 1;
break;
case "200 - 399 cal":
$calories = 2;
break;
case "400 - 599 cal":
$calories = 3;
break;
case "600 - 799 cal":
$calories = 4;
break;
case "800 - 999 cal":
$calories = 5;
break;
case ">1000 cal":
$calories = 6;
break;
default:
$calories = 10;
}
但问题是,无论我在HTML表单中选择哪个项目,$ calories的结果总是10,默认情况下的值。什么可能出错?
答案 0 :(得分:1)
$_POST['nutri-info']
中的值返回与200 - 399
类似,您正在使用200 - 399 cal
检查切换案例。
尝试从切换案例中删除cal
或在选项值
cal
答案 1 :(得分:0)
开关应该包含您在HTML选择中设置的值。
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
只需删除 cal 部分
即可答案 2 :(得分:0)
将您的选项值更改为此
switch($nutrition){
case "<200":
$calories = 1;
break;
case "200 - 399":
$calories = 2;
break;
case "400 - 599":
$calories = 3;
break;
case "600 - 799":
$calories = 4;
break;
case "800 - 999":
$calories = 5;
break;
case ">1000":
$calories = 6;
break;
default:
$calories = 10;
}
提交表单元素值的表单
答案 3 :(得分:0)
很高兴您学会了如何使用switch
语句纠正错误..!
您可能会发现学习更多内容很有用:您的选项的value
属性适合您,而不适合您的用户。我的意思是,他们没有看到它,所以你可以在那里放任何你想要的东西。
所以,不要给自己传递选择的字符串描述(,要求你使用开关<'>来'找出'整数值),只需简单地将整数传递给自己价值开始!
所以而不是:
<select class="sel-dropdown" name="nutri-info">
<option value="empty"></option>
<option value="<200"><200 cal</option>
<option value="200 - 399">200 - 399 cal</option>
<option value="400 - 599">400 - 599 cal</option>
<option value="600 - 799">600 - 799 cal</option>
<option value="800 - 999">800 - 999 cal</option>
<option value=">1000">> 1000 cal</option>
</select>
这样做:
<select class="sel-dropdown" name="nutri-info">
<option value=""></option>
<option value="1"><200 cal</option>
<option value="2">200 - 399 cal</option>
<option value="3">400 - 599 cal</option>
<option value="4">600 - 799 cal</option>
<option value="5">800 - 999 cal</option>
<option value="6">> 1000 cal</option>
</select>
然后你可以得到你想要的值,而根本不需要开关:
$calories = $_POST['nutri-info'];
// The switch is no longer needed..!
//
// $nutrition = $_POST['nutri-info'];
// switch($nutrition){
// case "<200 cal":
// $calories = 1;
// break;
// case "200 - 399 cal":
// $calories = 2;
// break;
// case "400 - 599 cal":
// $calories = 3;
// break;
// case "600 - 799 cal":
// $calories = 4;
// break;
// case "800 - 999 cal":
// $calories = 5;
// break;
// case ">1000 cal":
// $calories = 6;
// break;
// default:
// $calories = 10;
// }
故事的寓意是:设置value
属性,使它们对你有意义。用户只能看到有角度的括号之间的内容:
<option value="2">
200 - 399 cal </option>
所以,这一切对他们来说都是有意义的。