在SQL请求之后,我获得了一个包含数据列表的表单,每行末尾都有复选框。目标如下。如果用户检查其中一些,则在提交表单时将在数据库中删除该行。
我用我的SQL请求结果命名这样的复选框,所以我的Php脚本可以找到要删除的行:
<input type="checkbox" name="chk[<?echo '/'.'$t[datetr]'.'/'.'$t[beneficiaire]'.'/'.'$t[objet]'.'/'.'$t[montant]';?>]">
我的目标是将所有带有$ _POST的复选框值添加到我的Php脚本中。但即便如此......
foreach ($_POST as $key => $value) {
echo "<tr>";
echo "<td>";
echo $key;
echo "</td>";
echo "<td>";
echo $value;
echo "</td>";
echo "</tr>";
}
...我的php脚本似乎没有得到复选框值...我做错了什么?谢谢你的帮助。
答案 0 :(得分:2)
除了关于未通过HTTP请求传递未经检查的框的其他(完全准确的)评论之外 - 您的实际PHP存在一些问题。
function getDataButNoJerky() {
....
var chart = $('#container').highcharts(); // get our chart
// if you have multiple series
for (var i = 0; i < chart.series.length - 1; i++) {
chart.series[i].setData([]);
}
chart.showLoading('Loading....');
// request new data source here
$.getJSON('/data', function (data) {
// repopulate your chart with the data returned
}
}
首先,你的回声是错的;它可能应该是<?echo '/'.'$t[datetr]'.'/'.'$t[beneficiaire]'.'/'.'$t[objet]'.'/'.'$t[montant]';?>
或<?php echo
而不是<?=
(尽管可能会启用短启动标记)。
其次,PHP中的Apostrophes是非插值字符串文字(即<?echo
字面上将被视为字符串'$t[objet]'
而不是变量。)
最后,假设'$t[objet]'
是一个数组,你的关联索引需要有引号,否则它们会被解释为常量 - 这可能会引发错误。
我认为你想要的东西可以写成:
$t
一旦您对其进行了排序,<?= "/{$t['datetr']}/{$t['beneficiaire']}/{$t['objet']}/{$t['montant']}"; ?>
数据应该正确设置,并且它将成为您期待的关联数组。
然后一个$_POST['chk']
循环应该可以工作......但是,当然,你的输入实际上目前都没有值。
答案 1 :(得分:1)
使用<input type="checkbox" name="foo" value="42"/>
时,仅当选中复选框时,才会发送变量foo = 42 。如果未选中此框,则根本不会发送任何内容。
如果您需要0/1的某些信息,我建议您使用<select>
或几个<input type="radio">
代码:
<input type="radio" name="foo" value="1"/> Yes
<input type="radio" name="foo" value="0"/> No
答案 2 :(得分:1)
空白复选框不会发布到接收脚本,只有已选中的复选框。为了解决这个问题,有一组相应的隐藏字段,并将它们的值设置为&#34; ON&#34;或&#34; OFF&#34;取决于单击复选框的方式。您可能希望使用onClick事件,确定是否单击了该框,然后设置相应的隐藏字段,即 Checkbox_One Hidden_One Checkbox_Two Hidden_Two等 发布表单时,让脚本忽略复选框,然后处理隐藏的字段。
答案 3 :(得分:1)
如果您将所有复选框命名为name="boxArray[]"
,则会在提交表单时创建名为$_POST["boxArray"]
的数组。
然后你可以进行foreach循环来显示值:
foreach ($_POST["boxArray"] as $item) {
echo "<tr>";
echo "<td>";
echo $item;
echo "</td>";
echo "</tr>";
}
要添加到此,如果您只想删除已选中的项目,则为每个复选框分配记录的ID作为其值:
<input type="checkbox" name="boxArray[]" value="RECORD ID">
现在,当您运行foreach循环时,只有选中的框会发布值,因此您更改代码以删除数组中的每个项目:
foreach ($_POST["boxArray"] as $item) {
//SQL TO DELETE RECORD WHERE ID = $item;
}
答案 4 :(得分:1)
执行这些多重复选框时需要记住的是,当您提交时,它将在PHP中解释为数组,在您的情况下$_POST['chk']
将是一个已选中复选框的数组。
但是,您还应该确保给复选框一个值,即使只是1
。
处理您的POST时,最初只需尝试使用var_dump($_POST); die();
查看数据的样子。
答案 5 :(得分:1)
使用以下代码:
foreach ($_POST['chk'] as $key => $value) {
echo "<tr>";
echo "<td>";
echo $key;
echo "</td>";
echo "<td>";
echo $value;
echo "</td>";
echo "</tr>";
}