1

削除する一括アクションと単一の削除を備えたデータグリッドがあります。

これが私のデータグリッドのスナップショットです:

ここに画像の説明を入力

私のデータグリッドは次のとおりです:

 <form method="post" action="">
   <table>
      <tr>
         <td><input type="checkbox" value="1" name="checkIds[]"/></td>
         <td>user</td><td><a href="user/delete/1"><img src="delete.png"/></a></td>
      </tr>
   </table>
 </form>

一括アクション削除を使用すると、データを投稿として送信できます。現在、[アクション] 列に表示されているように、削除ボタン アクションを使用した単一の削除では、ハイパーリンクを配置するか、GET 要求として送信しています。私が知ったように、削除アクションは POST または DELETE を使用して、Web クローラーが誤ってデータを削除しないようにする必要があります。次のように POST アクションとして送信する解決策を考えました。

  <form method="post" action="user/delete/1" id="form_id_1"></form><a href="#" onclick="//submit form"><img src="delete.png"/></a>

問題は、このフォーム タグが親のフォーム タグ内にあり、フォーム タグを別のフォーム タグ内に配置できないため、HTML 標準に違反していることです。

ここで単一の削除アクションの投稿リクエストを送信するにはどうすればよいですか? 論理を教えてください。

4

3 に答える 3

0

別のフォームを追加しないでください。別の送信ボタンを追加するだけです。同じフォーム ハンドラーを使用して、"delete me" 送信ボタンが含まれているかどうかを確認します$_POST(ボタンがクリックされた場合にのみ発生します)。

ただし、すべてのアクションに POST を使用する必要があります。

于 2013-02-16T09:52:17.073 に答える
0

私は以下のような解決策を思いつきました。間違っている場合は修正してください

  <form method="post">
  <table>
  // datagrid
  <a href="delete" data="4"><img src="delete.png"/></a>
  </table>
  <input type="hidden" value="" name="id"/>

  // to distinguish between single delete and bulk delete
  <input type="hidden" name="single_delete" value="" id="single_delete_flag"/>
  </form>

  //js
  //onclick handler for anchor action delete:
  $("#id").attr("value",$(this).attr("data"));
  $("#single_delete_flag").attr("value","1");
  $("form").submit();


  //delete.php
  check if request if post
  check if single_delete is 1, then single delete
  else if check bulk delete
于 2013-02-16T10:00:21.643 に答える
0

試す:

 <form method="post" action="">
   <table>
      <tr>
         <td><input type="checkbox" value="1" name="checkIds[]"/></td>
         <td>user</td><td><input type="submit" class="sdelete" name="sdelete" value="<?= $ID; ?>" /></td>
      </tr>
   </table>
 </form>

そこから、css を使用して.sdelete外観を変更します。PHP では、次の方法で単一の削除を取得できます。

if(isset($_POST['sdelete'])) {
    $id = $_POST['sdelete'];
    //use $id to delete a single entry from DB, and then produce new output
}

そして、それは問題なく動作するはずです。^^

于 2013-02-16T10:18:54.077 に答える