0

是的,这是复选框表单问题之一。我试图让我的问题简短易懂。我有一个包含大约 25 个复选框的表单,分为 3 组。每组对每个复选框给出不同的分数。Group1 = 5 点/检查 | Group2 = 8 点/检查 | 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

4 回答 4

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
于 2013-06-18T07:57:26.377 回答
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;

于 2013-06-18T08:00:17.850 回答
0

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

于 2013-06-18T07:58:00.003 回答
0

用下面替换$a + 5;$b + 8;

$a += 5;
$b += 8;
于 2013-06-18T08:00:45.517 回答