1

これまでのところ、誰もがコーディングを楽しんでいることを願っています :D. 私はJQUERYに比較的慣れておらず、AJAXは自分の道を見つけようとしていますが、そこにたどり着いています。ただし、小さな問題が 1 つあります。PHP を使用して MYSQL データベースから生成された HTML コンテンツがあります (したがって、チェックボックスの値は異なります)。これは、私が自分の Web サイト用に取り組んでいる単純な内部メッセージング プログラムです。ページ上の他のすべてのチェックボックスを選択する、クリックできる単一のチェックボックスがあります。しかし、私が達成したいのは、ユーザーが特定の数のチェックボックスまたはいくつかのチェックボックスを選択してから、それを押して、ユーザーがチェックしたメッセージを削除する責任がある私のphpファイルを呼び出すときです。この前の質問は大いに役立ちました: How to pass jQuery variables to PHP variable?しかし、私は多数のチェックボックスを持っています

HTML/JS:

<body>
    Check Box: <input type="checkbox" name="check" value="1">
Check Box: <input type="checkbox" name="check" value="4">
Check Box: <input type="checkbox" name="check" value="3">
Check Box: <input type="checkbox" name="check" value="4">

<img id = "delete" src="http://icons.iconarchive.com/icons/visualpharm/must-have/256/Delete-icon.png">

<script>
$("#delete").click(function () {
   $.post('sql_delete.php', 'num=' + $(this).val(), function (response) {
      alert(response);
   });
}); 
</script>
</body>

PHP

<?php
    require 'functions/init.php';

        $messageid = "_$POST[num]";

        $sql_statement = "DELETE FROM chj_messages WHERE message_ID = $messageid";
        mysql_query($sql_statement);


?>

JS と PHP の両方でループが必要になるのではないかと思いますが、完全にはわかりません。あなたの美しい提案はすべて歓迎されます:D

4

2 に答える 2

0

jquery:

$('#your_form').submit(function() {
    $.post('sql_delete.php', $("#your_form").serialize(), function (response) {
        alert(response);
    });
    return false;
});

html:

<form id="your_form">
  Check Box: <input type="checkbox" name="check[]" value="1">
  Check Box: <input type="checkbox" name="check[]" value="6">
  Check Box: <input type="checkbox" name="check[]" value="8">
  Check Box: <input type="checkbox" name="check[]" value="4">
  <input type="image" src="path/to/your/image">
</form>

php:

$messageid = $_POST['check'];
foreach($messageid as $id) {
     $sql_statement = "DELETE FROM chj_messages WHERE message_ID = $id";
      mysql_query($sql_statement);

}

上記の編集されたコードはテスト済みです。

また、phpはおそらくループなしで実行する必要があります

$messageid = $_POST['check']; // sql injection already discussed.
$in = implode(", ", $messageid);
$sql_statement = "DELETE FROM chj_messages WHERE message_ID IN ($in)";
mysql_query($sql_statement);
于 2013-01-28T00:28:26.800 に答える
0

$messageid = "_$POST[num]";する必要があります$messageid = $_POST['num'];

ユーザーがチェックボックスをクリックすると、コードはチェックボックスを 1 つずつ削除します。ユーザーが好きなだけチェックできるようにしてから、いくつかのボタンをクリックして削除したい場合は、そのclickリスナーをチェックボックスから削除し、送信ボタンまたは言及した画像にバインドする必要があります。また、ajax 呼び出しの方法も変更する必要があります。チェックしたすべての ID をシリアル化して送信する必要があります。また、PHP コードはそのデータのシリアル化を解除し、受け取った ID ごとに DELETE クエリを作成する必要があります。

また、おそらく最も重要なことは、MySQL を使用するサイトを運用する前に、 SQL インジェクションについて読むことです。また、 mysql_* 関数は php.net にあるように廃止されているため、mysqli_* または PDO に切り替えることをお勧めします。

于 2013-01-28T00:07:15.097 に答える