为了账号安全,请及时绑定邮箱和手机立即绑定

在数据表内提交此按钮时未提交正确的行 ID

在数据表内提交此按钮时未提交正确的行 ID

PHP
潇湘沐 2023-08-06 15:36:55
我有一个动态表,它设置在 foreach 中,因此对于获取的数组的每个项目创建一个新行。我在最后一列中每行都有一个按钮。当单击该提交按钮时,我应该会收到 PHP 中的 id。提交已正确完成,但我在 PHP 中收到错误的 id。它基本上在提交时获取数组的最后一个 id。知道为什么吗?这是表格:<form method="post" id="frm-example" action="<?php echo $_SERVER["PHP_SELF"] . '?' . e(http_build_query($_GET)); ?>">            <table id="example" class="display compact">            <thead>                <th>Device</th>                                    <th>Sales date</th>                <th>Client comments</th>                  <th>Breakage count</th>            </thead>            <tbody>                <?php foreach ($arr_cases_devices as $cases) {  ?>                    <tr>                        <td>                            <?php echo $cases['name']; ?>                        </td>                        <td>                            <?php echo $cases["sales_date"]; ?>                        </td>                        <td>                            <?php echo $cases["dev_comment"]; ?>                        </td>                        <td>                                     <input type="hidden" name="device_id_breakage" value="<?php echo $cases["Dev_Id"]; ?>" />                           <button type="submit" name="see_rma">See RMA</button>                                               </td>                    </tr>                <?php } ?>            </tbody>        </table>   </form>当我点击see_rma这个时,我收到的 PHP 信息是:if (isset($_POST['see_rma'])) {   $selected_dev = e($_POST['device_id_breakage']);   print_r($selected_dev); // prints the "Dev_Id" of the last row, not of the row clicked}如果我尝试$cases["Dev_Id"];在表中的内部循环中打印,它会打印得很好,因此它会正确打印每行的 Dev_Id。因此,这意味着数组或数据没有任何问题。我不知道为什么会发生这种情况,但这肯定是我第一次遇到这个问题。我在许多其他表中都这样做了,但由于某些原因,它在这个表中无法正常工作。phphtml数据表表单提交
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

您的表单中有多个<input>同名元素,当您提交表单时,所有这些元素都会被提交,但 PHP 只能获取其中之一。这就是为什么你最终只得到最后一个$_POST

看起来您应该能够通过将一些属性从隐藏输入移动到按钮(替换隐藏输入)来解决此问题。

<button type="submit" name="device_id_breakage" value="<?php echo $cases["Dev_Id"]; ?>">
    See RMA
    </button>

只有被点击的按钮才会被提交。请注意,更改按钮的名称后,您将不再需要see_rma任何$_POST名称,因此,如果您有任何依赖于该名称的代码,则需要更改它以查找其他名称。


查看完整回答
反对 回复 2023-08-06
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信