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

我有一个动态表,它设置在 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数据表表单提交


潇湘沐
浏览 87回答 1
1回答

蛊毒传说

您的表单中有多个<input>同名元素,当您提交表单时,所有这些元素都会被提交,但 PHP 只能获取其中之一。这就是为什么你最终只得到最后一个$_POST。看起来您应该能够通过将一些属性从隐藏输入移动到按钮(替换隐藏输入)来解决此问题。<button&nbsp;type="submit"&nbsp;name="device_id_breakage"&nbsp;value="<?php&nbsp;echo&nbsp;$cases["Dev_Id"];&nbsp;?>"> &nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;RMA &nbsp;&nbsp;&nbsp;&nbsp;</button>只有被点击的按钮才会被提交。请注意,更改按钮的名称后,您将不再需要see_rma任何$_POST名称,因此,如果您有任何依赖于该名称的代码,则需要更改它以查找其他名称。
打开App,查看更多内容
随时随地看视频慕课网APP