0

こんにちは友達私は、1 つのチェックボックスを使用してすべてのチェックボックスを選択し、ajax を介してすべてのチェックボックスに値を渡し、データベースを更新する受信トレイ システムを作成しようとしています。しかし問題は、それらが値を付けられ、1つずつ選択されてから配列を形成することです

例えば

最初の時間 2 2 回目 2,3 3 回目 2,3,4

そして、配列のリストを取得してそれらを分割しようとしているSQLクエリで、データベースの値を更新できるようにしていますが、これも起こっていません。

チェックボックスの値を取得する

           $(function(){
   $('.massmsgdelbutton').click(function(){
    var val = [];
  $('.sltchk:checked').each(function(i){
   val[i] = $(this).val();
  var dataString = 'massmsgdel='+ val;
  if(confirm("Sure you want move all these messages to Trash? There is NO undo!"))
  {

$.ajax({
 type: "POST",
 url: "modules/messages/sql_ex.php",
data: dataString,
 cache: false,

 success: function(html){
 alert(html);
  }
 });

  }

});
 });
});

expodeを使用して配列を爆発させる私のSQLコード

       if(isset($_REQUEST['massmsgdel']))
         {
     $id=$_REQUEST['massmsgdel'];
        $myArray[] = explode(',', $id);
     echo $id;
        $sql=mysql_query("update message set trash='1' where message_id='$myArray'");
        }
4

3 に答える 3

1

ここで実際に使用できるアプローチは 2 つあります。とにかく、私の経験から。

次のように、持っている配列 (foreach ループ) をループして、毎回 UPDATE を実行することができます。

$sql=mysql_query("update message set trash='1' where message_id='$messageID'");

または、次のような IN SQL 演算子 (詳細についてはこちらをご覧ください) を使用してみてください。

$sql=mysql_query("update message set trash='1' where message_id IN ('$messageID1', '$messageID2', '$messageID3', '$messageID4')");

IN 演算子は、message_id を括弧内のパラメーターのいずれかに一致させます。

于 2012-04-13T18:49:36.597 に答える
0

それは機能しますか?

if(isset($_REQUEST['massmsgdel']))
{
     $id=$_REQUEST['massmsgdel'];
        $myString = implode(',', $id);
     echo $id;
        $sql=mysql_query("update message set trash='1' where message_id IN ($myString)");
}
于 2012-04-13T19:03:38.773 に答える
0

みんな私は解決策を見つけました。

私が使用しなければならなかったjqueryで

  var dataString = 'massmsgdel='+ val[i];

それ以外の

  var dataString = 'massmsgdel='+ val;

そしてSQLで私は使用しなければなりませんでした

      $sql=mysql_query("update message set trash='1' where message_id IN ('$myArray')");

@フランク・アレンビー、私を助けてくれてありがとう

于 2012-04-13T19:18:48.050 に答える