复选框在数据库中增加值

时间:2013-06-18 07:53:45

标签: php html forms checkbox isset

是的,这是其中一个复选框表格问题。 我试图让我的问题简短易懂。 我有一个包含大约25个复选框的表单,分为3组。每个组为每个复选框提供不同的点。 Group1 = 5points / check | Group2 = 8points / check | Group3 = 12点/检查。我想要做的是计算提交的支票数量,然后将所有内容添加到总分中。简单?可以随时检查新框,这意味着总分可以增加,并且为了更容易,不能取消选中复选框,因此总分不会降低。然后总分将保存在数据库表中。这就是我现在所拥有的,它并不多,但我需要对我的问题有新的认识。这个等式在我看来很容易,但我无法在纸上得到它。

            ....5points
                    <label for="first_name">first point</label>
                    <input type="checkbox" name="five[]" value="1" <?php if(isset($_POST['five'])) echo 'checked="checked"'; ?> />

                    <label for="first_name">sec point</label>
                    <input type="checkbox" name="five[]" value="1" <?php if(isset($_POST['five'])) echo 'checked="checked"'; ?> />

                    <label for="first_name">n point</label>
                    <input type="checkbox" name="five[]" value="1" <?php if(isset($_POST['five'])) echo 'checked="checked"'; ?> />
................8points
                    <label for="first_name">first point</label>
                    <input type="checkbox" name="eight[]" value="1" <?php if(isset($_POST['eight'])) echo 'checked="checked"'; ?> />

                    <label for="first_name">sec point</label>
                    <input type="checkbox" name="eight[]" value="1" <?php if(isset($_POST['eight'])) echo 'checked="checked"'; ?> />
....12points and so on

也可以使用 Isset =已检查代码保存选中的复选框。 这是我总得分的难看:

$a =0;
$b =0;
$total;
if(isset($_POST['submitted']))
{
if (isset($_POST['five'])) {
    foreach ($_POST['five'] as $five) {
       $a + 5;
    }
 if (isset($_POST['eight'])) {
    foreach ($_POST['eight'] as $eight) {
       $b + 8;
    }
    $total=$total+$a+$b;
}

但当然它没有做到这一点,它只是给了我一个回音结果5555555和888888.我也不希望我的总数两次加上相同的分数,它现在似乎做了。有人可以直接帮我解决这个脑筋急转弯吗?

4 个答案:

答案 0 :(得分:2)

将$ a + 5和$ a + 8更改为:

$a += 5;
$a += 8;

或者你可以让整个计算更加智能,就像这样:

if(isset($_POST['submitted'])) {
  $fives = isset($_POST['five']) ? $_POST['five'] : array();
  $eights = isset($_POST['eight']) ? $_POST['eight'] : array();
  $twelves = isset($_POST['twelve']) ? $_POST['twelve'] : array();

  $total = 5 * count($fives) + 8 * count($eights) + 12 * count(twelves);
}

此外,如果提交,您的html会检查所有复选框。如果您不希望减去点数,请更改if语句,名称和添加disabled属性:

            ....5points
                    <label for="first_name">first point</label>
                    <input type="checkbox" name="five[0]" value="1" <?php if(isset($_POST['five'][0])) echo 'checked="checked" disabled="true"'; ?> />

                    <label for="first_name">sec point</label>
                    <input type="checkbox" name="five[1]" value="1" <?php if(isset($_POST['five'][1])) echo 'checked="checked" disabled="true"'; ?> />

                    <label for="first_name">n point</label>
                    <input type="checkbox" name="five[2]" value="1" <?php if(isset($_POST['five'][2])) echo 'checked="checked" disabled="true"'; ?> />
................8points
                    <label for="first_name">first point</label>
                    <input type="checkbox" name="eight[0]" value="1" <?php if(isset($_POST['eight'][0])) echo 'checked="checked" disabled="true"'; ?> />

                    <label for="first_name">sec point</label>
                    <input type="checkbox" name="eight[1]" value="1" <?php if(isset($_POST['eight'][1])) echo 'checked="checked" disabled="true"'; ?> />
....12points and so on

答案 1 :(得分:2)

您需要更改PHP代码,这是一个示例:

$total = 0;
if(isset($_POST['submitted'])) {
    if (isset($_POST['five'])) {
        foreach ($_POST['five'] as $five) {
            $total += 5;
        }
    }
    if (isset($_POST['eight'])) {
        foreach ($_POST['eight'] as $eight) {
            $total += 8;
        }
    }
}

+=运算符在这种情况下接受一个变量$total,并在右侧添加任何内容。因此$total += 8;$total = $total + 8;

相同

答案 2 :(得分:0)

在你的foreach循环中你只需要$ a + 5和$ b + 8,你可能想写$ a + = 5,$ b + = 8

答案 3 :(得分:0)

用下面的

替换$a + 5;$b + 8;
$a += 5;
$b += 8;