PHP switch语句
我目前有一个名为“user.php”的页面,我有一个HTML表单,允许用户从营养相关信息列表中进行选择,还有一些处理输入并最终存储它们的PHP代码到MySQL数据库:PHP switch语句
<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表单中选定的项目的$卡路里的结果总是10,默认情况下的值。任何想法可能会出错?
开关应包括正是你已经在HTML中选择设置的值加cal
。
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;
}
只需卸下CAL部分
谢谢,问题已解决。 – fittaoee
改变你的选择值这个
<option value="200 - 399 cal">200 - 399 cal</option>
<option value="400 - 599 cal">400 - 599 cal</option>
<option value="600 - 799 cal">600 - 799 cal</option>
...do like this
怎么一回事,因为形式submiting表单元素值
谢谢您的输入。 – fittaoee
这是伟大的,你学会了如何纠正错误与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>
所以,这一切必须是有意义的他们。
啊耶!非常聪明!没有想过这样做,非常感谢。 – fittaoee
它会更有意义的使用数字在第一个地方而不是开关/外壳它是这样吗? – Gordon
为什么你要检查“''中的值或从案例中删除它 –
@fittaoee请选择正确的答案,所以在将来如果有人提到这个线程可以知道什么是正确的解决方案。 – JiteshNK