3个具有相同名称和相同数值的复选框

时间:2013-03-16 12:49:31

标签: php checkbox

鉴于此代码:

<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以计算总价。

4 个答案:

答案 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'); 

http://codepad.viper-7.com/kJlGoS

答案 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属性值