【问题标题】:Retrieving value from id attribute从 id 属性中检索值
【发布时间】:2023-03-10 15:58:01
【问题描述】:

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

【问题讨论】:

  • 您在$listOfMembers 末尾缺少一个结束引号
  • 不应该是foreach( $members as $memberID ),还是参数应该是function ($membersIDs){}

标签: php arrays forms input


【解决方案1】:

您有几种选择来处理您要完成的任务:

  • 将按钮转换为链接并使用GET 而不是POST。您可以使查询字符串类似于?action=delete&amp;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 字段。所以,不要用&lt;form&gt;&lt;/form&gt; 包裹整个东西,而是包裹每组按钮:

试试:

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)将是最简单的。

【讨论】:

  • 非常感谢这个详细的回答。 :)
【解决方案2】:
<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' />

您应该使用一个隐藏字段来存储成员 ID。

并通过使用

获取隐藏字段的值

$id=$_POST['id'];

【讨论】:

    【解决方案3】:

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

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

    公共函数 ShowMembers($members) { $i = 0; foreach ($memberIds 作为 $memberId) { $listOfMembers = "姓名: $fNames[$i] $lNames[$i] $i += 1; } 返回 $html; }

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

    现在$POST[$_POST['member_id']."_del"] 将成为您的删除请求

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

    【讨论】:

      【解决方案4】:

      我建议使用&lt;a&gt; 标签而不是&lt;input type="submit"&gt;,所以它可能看起来像

      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;
          }
      

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

      【讨论】:

        猜你喜欢
        • 2018-10-06
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 2020-12-21
        • 2021-06-03
        • 2013-09-03
        • 2013-05-22
        相关资源
        最近更新 更多