0

グリッド テーブルは、ユーザーがチェックするチェック ボックスの列を持つ PHP/MySQL を介して表示されます。名前は「checkMr[]」で、次のとおりです。

 echo "<tr><td>
 <input type=\"checkbox\" id=\"{$Row[CONTAINER_NUMBER]}\" 
 data-info=\"{$Row[BOL_NUMBER]}\" data-to=\"{$Row[TO_NUMBER]}\" 
 name=\"checkMr[]\" />
 </td>";

お気づきのように、モーダル ウィンドウに送信される id、data-info、および data-to の属性があります。属性をモーダル ウィンドウに送信する JavaScript は次のとおりです。

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

ここまでは順調ですね。モーダルは、javascript を介して属性を取得します。それらを表示するかどうかを選択できます。モーダルが属性を取得する方法は次のとおりです。

 <div id="myModal">
   <div class="modal-body">
   <form action="" method="POST" name="modalForm">
     <input type="hidden" name="containerNumber" class="containerNumber" id="containerNumber" />
     <input type="hidden" name="bolNumber" class="bolNumber" id="bolNumber" />
     <input type="hidden" name="toNumber" class="toNumber" id="toNumber" />
   </form>
   </div>
 </div>

ユーザーがデータを入力するフォーム内に追加のフィールドがありますが、コードを表示しないことを選択しました。しかし、これまでのところ、すべてが機能しています。フォーム データを PHP 変数に送信する送信ボタンがあります。次に、必要なテーブルを更新する mysql INSERT ステートメントがあります。

PHP コードは次のとおりです (モーダル ウィンドウ内)。

 <?php
 $bol = $_POST['bolNumber'];    
 $container = $_POST['containerNumber']; 
 $to = $_POST['toNumber'];  

 if(isset($_POST['submit'])){
 $bol = mysql_real_escape_string(stripslashes($bol));
 $container = mysql_real_escape_string(stripslashes($container));
 $to = mysql_real_escape_string(stripslashes($to));

 $sql_query_string = 
   "INSERT INTO myTable (bol, container_num, to_num)
   VALUES ('$bol', '$container', '$to')
 }
    if(mysql_query($sql_query_string)){
      echo ("<script language='javascript'>
             window.alert('Saved')
             </script>");
    }
    else{
      echo ("<script language='javascript'>
             window.alert('Not Saved')
             </script>");
   }
 ?>

これはすべて機能します。ユーザーがチェックボックスをオンにし、モーダル ウィンドウが開き、ユーザーが追加のフォーム フィールドに入力し、保存をクリックすると、問題がない限り、適切なウィンドウがポップアップして「保存されました」と表示されます。

問題は次のとおりです。ユーザーが複数のチェックボックスをオンにすると、モーダルは実際に複数のコンテナー番号を取得し、それを表示できます。それらはすでにカンマで区切られているようです。

問題は、PHP 変数が複数のコンテナー番号 (または bol 番号) を保持している場合に発生します。コンテナー番号を区切る必要があり、PHP がコンテナー番号ごとに複数の INSERT ステートメントを自動的に作成できる方法が必要だと思います。

何らかの形で変数を配列に配置する必要があることは知っています。そして、各コンテナーを読み取り、コンマがある場合はコンテナーを区切る FOR ループが必要です。

これを行う方法がわかりません。

4

2 に答える 2