鉴于此代码:
<input type="checkbox" id="Coke" name="Price" value="70" />
<input type="checkbox" id="Fanta" name="Price" value="70" />
<input type="checkbox" id="Sprite" name="Price" value="70" />
我想知道,如果我的用户选择Fanta复选框,我想要我的php变量$type="Fanta"
,但我需要表格复选框VALUES以保留NUMERIC以计算总价。
答案 0 :(得分:3)
目前尚不清楚你究竟在问什么,但我相信你基本上需要2个字段,一个定义价格,另一个定义所选类型。
在这种情况下,您最好的选择是存储服务器端的价格(这样人们也无法修改它们,这很好!)。如果您这样做,您的复选框将如下所示:
<input type="checkbox" id="Coke" name="type[]" value="Coke" />
<input type="checkbox" id="Fanta" name="type[]" value="Fanta" />
<input type="checkbox" id="Sprite" name="type[]" value="Sprite" />
您的后端代码如下所示:
$prices = array(
'Coke' => 70,
'Fanta' => 70,
'Sprite' => 70
);
$types = $_POST['type'];
$total = 0;
foreach($types as $key => $type) {
if (!isset($prices[$type]))
continue;
$total += $prices[$type];
}
// Use $total as your total price for whatever calculation
echo $total;
根据您的评论,如果您仍然希望这些价格客户端进行计算,您可以使用json_encode
将其输出到脚本标记中并直接使用价格。它基本上将服务器端价格数组转换为客户端价格数组。
<script type="text/javascript">
var prices = <?= json_encode($prices) ?>;
// Now you can use prices['Coke'] etc, based off the value of the selected checkbox.
</script>
答案 1 :(得分:1)
我想知道,如果我的用户选择Fanta复选框,
然后将您的字段命名为fanta
:
<input type="checkbox" id="Fanta" name="fanta" value="70" />
完成后,您可以使用$_POST
or the $_GET
superglobal(取决于您的表单方法)获取值:
if (isset($_POST['fanta'])) {
echo $_POST['fanta'];
}
但是,您永远不应该依赖来自客户的价格!
但我需要表格复选框VALUES以保留NUMERIC以计算总价。
这不会发生,因为HTTP值是作为字符串发送的。幸运的是,PHP为您自动type juggling,因此您仍然可以使用字符串值进行计算。
http://codepad.viper-7.com/GOhHdz
在某些情况下,您希望明确地将其设为整数值。在这种情况下,您可以使用type casting:
var_dump((int) '18');
答案 2 :(得分:0)
当您发布表单时,无论如何您将获得70作为值。
echo $_POST['Price'];
给出70
答案 3 :(得分:0)
<input type="checkbox" value="Coke" name="Price" rel=70 />
<input type="checkbox" value="Fanta" name="Price" rel="70" />
<input type="checkbox" value="Sprite" name="Price" rel="70" />
使用javascript获取总价格所选复选框的rel属性值