0

我想列出数据库中的成员,每个成员旁边有两个按钮(删除成员和更改信息)。以下是目前为止的代码,但问题是我不知道如何从输入按钮(放置在 id 属性中)检索成员 id。怎么可能做到这一点?

这就是我想要的样子:

  • 姓名:Steven Larson [删除按钮] [更改信息按钮]
  • 姓名:Julia Segal [删除按钮] [获取更多信息按钮]
  • 等等……

到目前为止在 MemberView.php 中的代码:

public function ShowMembers($memberIds) {

    $i = 0;
        foreach ($memberIds as $memberId) {
            $listOfMembers =
            "<b>Name:</b> $fNames[$i] $lNames[$i]
            <input type='submit' id='$memberId' name='delete' value='Delete member' />
            <input type='submit' id='$memberId' name='changeInfo' value='Change info' />
            $i += 1;
        }

    $html = "<form method='post'>
               <p>$listOfMembers</p>;
            </form>";

    return $html;
}

public function TriedToDelete() {
    if (isset($_POST[delete])){
        return $_POST[delete];
    }
}
4

4 回答 4

2

您有几个选项来处理您要完成的任务:

  • 将按钮转换为链接并使用GET而不是POST. 您可以使查询字符串类似于?action=delete&id=$memberId.

尝试:

foreach ($memberIds as $memberId) {
    $listOfMembers = "<b>Name:</b> $fNames[$i] $lNames[$i]
    <a href=\"page.php?action=delete&id=$memberId\">Delete member</a>
    <a href=\"page.php?action=changeInfo&id=$memberId\">Change info</a>";
    $i += 1;
}


  • 为每个成员制作一个单独的表格,并为每个成员设置一个隐藏id字段。因此,不要用 包裹整个东西,而是<form></form>包裹每组按钮:

尝试:

foreach ($memberIds as $memberId) {
    $listOfMembers = "<b>Name:</b> $fNames[$i] $lNames[$i]";
    $listOfMembers .= '<form method="post">';
    $listOfMembers .= '<input type="hidden" name="id" value="' . $memberId . '" />';
    $listOfMembers .= "<input type='submit' name='delete' value='Delete member' />";
    $listOfMembers .= "<input type='submit' name='changeInfo' value='Change info' />";
    $listOfMembers .= '</form>';
    $i += 1;
}


  • 单击每个单独的按钮时,使用 JavaScript 设置隐藏字段。

尝试:

<script>
    function submit(button) {
        document.getElementById('id').value = button.getAttribute('id');
        document.getElementById('action').value = button.getAttribute('name');
        button.form.submit();
    }
</script>

您将使用的每个按钮:

$listOfMembers .= "<input type='button' id='$memberId' name='delete' value='Delete member' onclick='submit(this);'  />";
$listOfMembers .= "<input type='button' id='$memberId' name='changeInfo' value='Change info' onclick='submit(this);' />";

这完全是一个意见问题,但如果您必须使用 POST,我会个人建议第二个选项(每个组的单独表格);否则,第一个(使用 GET)将是最简单的。

于 2012-10-12T15:25:25.423 回答
1
<input type='hidden' id='$memberId' name='id' value='$memberId' />       
<input type='submit' id='$memberId1' name='delete' value='Delete member' />  
<input type='submit' id='$memberId2' name='changeInfo' value='Change info' />

您应该使用存储 memberid 的隐藏字段。

并通过使用获取隐藏字段的值

$id=$_POST['id'];

于 2012-10-12T15:22:57.273 回答
1

第一个 id 在 html 中的两个元素中应该是唯一的

在您的情况下,删除和更改按钮 ID 应该不同,例如

公共函数 ShowMembers($members) {

    $i = 0;
        foreach ($memberIds 作为 $memberId) {
            $listOfMembers =
            "名称: $fNames[$i] $lNames[$i]

            
            
            $i += 1;
        }


    返回 $html;
}

如果您通过表单发布,表单应该有所不同,否则它将设置两个输入字段,通过这种方式您将不知道您真正想要做什么

现在$POST[$_POST['member_id']."_del"]将是您的 del 请求

并将$POST[$_POST['member_id']."_change"]成为您的更改按钮

于 2012-10-12T15:24:27.603 回答
1

我建议使用<a>tag 而不是<input type="submit">,所以它可能看起来像

foreach ($memberIds as $memberId) {
        $listOfMembers =
        "<b>Name:</b> $fNames[$i] $lNames[$i]
        <a href="delete.php?id=$memberId">Delete member</a>
        <a href="edit.php?id=$memberId">Change info</a>
        $i += 1;
    }

并且您不再需要使用复杂的表单解决方案并依赖于单击的按钮名称

于 2012-10-12T15:25:02.923 回答