从具有相同表单元素的页面中获取数据


Get data from a page with the same form elements

我有一个名为account.php的页面它显示mysql表中的用户数据。(在这个问题中,我将以邮件系统为例)

账户页面中有以下代码:

while($stmt->fetch()){
    echo "<tr>
    <td>
    <form action='action.php' method='POST'>
        <input type='hidden' name='mail_id' value='$mail_id'>
         Mail:$mail_subject
        <input type='submit' name='reply value='reply'>
        <input type='submit' name='delete' value='delete'>
    <form>
    </td>
    </tr> ";
}

其中在action.php中,我有这样的代码:

if(isset($_POST['reply'])){
   echo "$_POST['mail_id']";
} 
if(isset($_POST['delete'])){
   echo "$_POST['mail_id']";
} 

在渲染的html。最后一个mail_id是101当我点击mail_id'35'上的回复按钮时,返回的post值是101。

我的问题是,当我点击mail_id‘35’行中的回复按钮而不是‘101’时,我如何获得mail_id’35’

首先,您应该将表单标记从while循环中移开。然后你可以给你的回复和删除按钮不同的名称,如reply[$mail_id]delete[$mail_id]。所以你可以在后台检查哪个被点击了

echo "<form action='action.php' method='POST'>";
while($stmt->fetch()){
    echo"<tr>
    <td>
        <input type='hidden' name='mail_id' value='$mail_id'>
         Mail:$mail_subject
        <input type='submit' name='reply[$mail_id]' value='reply'>
        <input type='submit' name='delete[$mail_id]' value='delete'>
    </td>
    </tr> ";
}
echo "<form>";

您可以使用以下代码在后端获得$mail_id

$mail_reply_id = (!empty($_POST['reply'])) ? key($_POST['reply']) : 0;
$mail_delete_id = (!empty($_POST['delete'])) ? key($_POST['delete']) : 0;