0

各メンバーの横にある 2 つのボタン (メンバーの削除と情報の変更) を使用して、データベースからメンバーを一覧表示したいと考えています。以下、ここまでのコードですが、入力ボタン(id属性に配置)から会員IDを取得する方法がわからないのが問題です。これはどのように行うことができますか?

これが私が望む方法です:

  • 名前: スティーブン・ラーソン [削除ボタン] [情報変更ボタン]
  • 名前: 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 を使用する必要がある場合は、2 番目のオプション (グループごとに個別のフォーム) を個人的にお勧めします。それ以外の場合は、1 つ目 (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' />

メンバー ID を格納する隠しフィールドを使用する必要があります。

を使用して非表示フィールドの値を取得します

$id=$_POST['id'];

于 2012-10-12T15:22:57.273 に答える
1

最初の ID は、html の 2 つの要素で一意である必要があります

あなたの場合、ボタンIDの削除と変更は次のように異なる必要があります

public function ShowMembers($members) {

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

            
            
            $i += 1;
        }


    $html を返します。
}

フォームを介して投稿する場合、フォームは異なる必要があります。そうしないと、両方の入力フィールドが設定され、実際に何をしたいのかわかりません。

$POST[$_POST['member_id']."_del"]あなたのデルリクエストになります

そして$POST[$_POST['member_id']."_change"]あなたの変更ボタンになります

于 2012-10-12T15:24:27.603 に答える
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;
    }

複雑なフォーム ソリューションを使用する必要がなくなり、クリックされたボタンの名前に依存する必要がなくなりました

于 2012-10-12T15:25:02.923 に答える