选中时,php表单的总和复选框

选中时,php表单的总和复选框,php,forms,checkbox,Php,Forms,Checkbox,我有一个显示复选框的php表单。这些复选框与从mysql填充的数值相关联。我想做的是添加每个复选框的值,但只有在复选框被选中时 我遇到的问题是,无论我选中了哪些框,都会返回第一个复选框中的值。例如,如果共有5个复选框,并且我选择了底部的2个复选框,则返回的总数是顶部的2个复选框,而不是底部的复选框。我的php代码似乎知道要检查哪些框,但不知道要检查哪些框 这是我的表格代码 echo "<input type=\"hidden\" name=\"ID[]\" value=\"".$row['

我有一个显示复选框的php表单。这些复选框与从mysql填充的数值相关联。我想做的是添加每个复选框的值,但只有在复选框被选中时

我遇到的问题是,无论我选中了哪些框,都会返回第一个复选框中的值。例如,如果共有5个复选框,并且我选择了底部的2个复选框,则返回的总数是顶部的2个复选框,而不是底部的复选框。我的php代码似乎知道要检查哪些框,但不知道要检查哪些框

这是我的表格代码

echo "<input type=\"hidden\" name=\"ID[]\" value=\"".$row['ID']."\" />";
echo "<tr><td>&nbsp;<input type=\"checkbox\" name=\"checked[]\" value=\"Y\"></td>";
echo "<input type=\"hidden\" name=\"amount[]\" value=\"".$row['amount']."\" />";

谢谢您的帮助。

看起来您的隐藏字段和实际复选框有不同的名称,请尝试将它们放在相同的名称中

<input type='hidden" name='checkbox" value="no" />
<input type="checkbox" name="checkbox" value=$row['ID'] />

从表单发送的唯一复选框是选中的复选框,数组索引将从0开始,无论它们是哪一个。所以复选框的索引和隐藏字段的索引之间没有对应关系。有几种方法可以解决这个问题

一种方法是在复选框名称中放置显式索引:

echo "<tr><td>&nbsp;<input type=\"checkbox\" name=\"checked[".$row['ID']."]\" value=\"Y\"></td>";
echo "<input type=\"hidden\" name=\"amount[".$row['ID']."]\" value=\"".$row['amount']."\" />";
另一种方法是将金额直接放入复选框的值中,而不是无用的
Y
值:

echo "<tr><td>&nbsp;<input type=\"checkbox\" name=\"checked[]\" value=\"".$row['amount']."\" /></td>";
第三种方法是在所有字段的名称中放置显式索引,而不是在提交表单时让PHP分配它们:

echo "<input type=\"hidden\" name=\"ID[".$i."]\" value=\"".$row['ID']."\" />";
echo "<tr><td>&nbsp;<input type=\"checkbox\" name=\"checked[".$i."]\" value=\"Y\"></td>";
echo "<input type=\"hidden\" name=\"amount[".$i."]\" value=\"".$row['amount']."\" />";
echo”“;
回声“;
回声“;

其中,
$i
是一个在生成表单时递增的变量。这将使索引按照表单代码所期望的方式工作。

前面提到的另一个选项是使用JavaScript进行添加,并将结果存储在隐藏的输入字段中。您甚至可以使用onclick来运行一个JS函数来添加值(您应该在复选框的值中而不是在隐藏字段中设置它)。然后将总数存储到隐藏的输入字段值中。这将与复选框一起在您的帖子中传递。如果您想双重检查金额,您可以将复选框的值相加并与隐藏字段进行比较。

您可能需要JavaScript的onclick或onchange事件来更改输入元素的属性。需要检查两件事:每行的金额字段是否不同(检查HTML输出)。检查print\u r($\u POST)的输出。你在那里看到了什么。也许发生了一些你看不到的事情。谢谢!我选择将值设置为美元金额,而不是“Y”。我没有想到只有复选框才会被提交。
echo "<tr><td>&nbsp;<input type=\"checkbox\" name=\"checked[]\" value=\"".$row['amount']."\" /></td>";
$totamt += $_POST['checked'][$i];
echo "<input type=\"hidden\" name=\"ID[".$i."]\" value=\"".$row['ID']."\" />";
echo "<tr><td>&nbsp;<input type=\"checkbox\" name=\"checked[".$i."]\" value=\"Y\"></td>";
echo "<input type=\"hidden\" name=\"amount[".$i."]\" value=\"".$row['amount']."\" />";