在一个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) { ... }循环应该可以工作…当然,目前没有一个输入值。

10-07 19:25
查看更多