是的,这是其中一个复选框表格问题。 我试图让我的问题简短易懂。 我有一个包含大约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.我也不希望我的总数两次加上相同的分数,它现在似乎做了。有人可以直接帮我解决这个脑筋急转弯吗?
答案 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;