在一个sql请求之后,我获得一个包含数据列表的表单,每行末尾都有复选框。目标如下。如果用户检查了其中的一些,则在提交表单时,该行将在数据库中删除。
我将我的复选框命名为如下,其中包含我的sql请求结果,这样我的php脚本就可以找到要删除的行:
<input type="checkbox" name="chk[<?echo '/'.'$t[datetr]'.'/'.'$t[beneficiaire]'.'/'.'$t[objet]'.'/'.'$t[montant]';?>]">
我的目标是将所有带有$的复选框值发送到我的php脚本。但即使这样…
foreach ($_POST as $key => $value) {
echo "<tr>";
echo "<td>";
echo $key;
echo "</td>";
echo "<td>";
echo $value;
echo "</td>";
echo "</tr>";
}
…我的php脚本似乎没有获得复选框值…我做错什么了吗?谢谢你的帮助。
最佳答案
除了其他(完全准确的)关于未检查的框没有随http请求一起传递的注释之外,您的实际php还有一些问题。
<?echo '/'.'$t[datetr]'.'/'.'$t[beneficiaire]'.'/'.'$t[objet]'.'/'.'$t[montant]';?>
首先,您的echo是错误的;它可能应该是
<?php echo
或<?=
而不是<?echo
(尽管这可能适用于启用了短开始标记的情况)。其次,php中的撇号是非内插的字符串文本(即
'$t[objet]'
将被视为字符串'$t[objet]'
而不是变量)。最后,假设
$t
是一个数组,则关联索引需要有引号,否则它们将被解释为常量-这可能会引发错误。我想你想要的可以写成:
<?= "/{$t['datetr']}/{$t['beneficiaire']}/{$t['objet']}/{$t['montant']}"; ?>
一旦整理好了,就应该正确设置
$_POST['chk']
数据,它将是一个如您所期望的关联数组。那么
foreach($_POST['chk'] as $key => $value) { ... }
循环应该可以工作…当然,目前没有一个输入值。