0

私は自分の問題を言い換えようとしています。

それぞれが複数の列を持つ何千ものレコードを返すことができるデータテーブルがあります。最初の列にチェックボックスがあり、ユーザーがチェックボックスをオンにしてボタンをクリックすると、行に関連付けられている CONTAINER_NUMBER がモーダル ウィンドウに送信され、フォームで使用されます。

チェックボックスのコードは次のとおりです。

 echo "<tr><td><input type=\"checkbox\" id=\"{$Row[CONTAINER_NUMBER]}\" name=\"checkMr[]\" /></td>";

これは、CONTAINER_NUMBER を取得してモーダル ウィンドウに送信する JavaScript です。

   <script type="text/javascript">
   $(function()
   {
    $('a').click(function()
    {
        var selectedID = [];
        $(':checkbox[name="checkMr[]"]:checked').each(function()
        {               
            selectedID.push($(this).attr('id'))         
        });                                             
        $(".modal-body .containerNumber").val( selectedID );
       });
    });
    </script>

これは、CONTAINER_NUMBER を表示するモーダル ウィンドウのセクションです。

 <div class="modal-body">
   <form action="" method="POST" id="serviceModalForm" name="serviceModalForm">
   <input type="text" name="containerNumber" id="containerNumber" class="containerNumber">

これは、id="containerNumber" を受け取り、それを PHP 変数に変換する PHP のセクションです。その後、containerNumber をデータベース テーブルに挿入する INSERT ステートメントがあります。

 <?php
   $container = $_POST['containerNumber'];

   if(isset($_POST['submit'])){
     $container = mysql_real_escapse_string(stripslashes($container));

     $sql = "INSERT INTO myTable (container_num) VALUES ('$container')";

     if(mysql_query($sql)){
       echo "Insert complete";
     }
     else {
       echo "Insert was not completed";
     }
 ?>

このコードは問題ありません。それはうまくいきます。ユーザーが1つのチェックボックスをチェックしたときに、本来の目的を果たします。ユーザーが複数のチェックボックスをオンにすると機能しません。

基本的に、私が調査してきたことから、変数 $container からレコードを分離する必要があるということです。その変数には複数のコンテナーが存在する可能性があるため、複数のコンテナー番号が選択されている場合にクエリが機能しないのはそのためです。 .

コンテナー番号を分離して、配列などに格納できるようにする必要があります。クエリは各レコードを個別に読み取り、レコードごとに複数の INSERT ステートメントを生成します。

配列を作成して sql ステートメントにそれを認識させようと何度か試みましたが、うまくいきませんでした。配列を正しい場所に配置しているかどうかはわかりません。コンテナーがモーダル ウィンドウに送信される前に、JavaScript でこれを行う必要があるかどうかはわかりません。

配列を処理するには FOREACH ループを使用する必要があることはわかっていますが、前述のように、配列をコード内のどこに配置する必要があるかわかりません。

助けてください。PDO または MYSQLI を学ぶ必要があることはわかっています。次のアプリケーションでは必ず PDO または MYSQLI を利用します。それまでは、この問題の解決にご協力ください。

ありがとうございます、長文失礼しました。

4

1 に答える 1

1

containerNumber は、js 配列から変換された文字列として投稿されます。id1、id2、id3のようなもの[...]

PHP コードで、$container を配列 ( $containerArray = explode(",", $container)) に変換し、SQL を動的に構築して単一のクエリにすべての行を追加し、ステートメントが次のようになるようにします。

INSERT INTO myTable (container_num) VALUES ('$containerArray[0]'), ('$containerArray[1]')[...]
于 2013-11-12T18:40:52.753 に答える