从id属性中检索值

时间:2012-10-12 15:19:05

标签: php arrays forms input

我想列出数据库中的成员,每个成员旁边有两个按钮(删除成员和更改信息)。下面是目前为止的代码,但问题是我不知道如何从输入按钮(放在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 个答案:

答案 0 :(得分: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)将是最简单的。

答案 1 :(得分: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'];

答案 2 :(得分:1)

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

在您的情况下,删除和更改按钮ID应该与

不同

public function ShowMembers($members) {

    $i = 0;
        foreach ($memberIds as $memberId) {
            $listOfMembers =
            "Name: $fNames[$i] $lNames[$i]

            
            
            $i += 1;
        }


    return $html;
}

如果您通过表单发布,

表单应该是不同的,否则它将设置两个输入字段,这样您将不知道您实际想要做什么

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

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

答案 3 :(得分:1)

我建议使用<a>代码而不是<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;
    }

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