php
2017-02-13 6 views 0 likes 
0

今まで私には珍しい状況がありました...私はHTMLデータベースを作成し、SQL DBから$ locations基本的に配列され、変数 - ここのコードです:特定のテーブルのセルの値をSQLの更新クエリに渡す

while ($location = mssql_fetch_array($locations)){ 

echo" 
<tr> 
<td style='text-align:center; padding-left: 2px; padding-right: 2px'>$location[1]</td> 
<td style='text-align:center; padding-left: 2px; padding-right: 2px'>$location[2]</td> 
<td width='50' style='text-align:center; padding-left: 2px; padding-right: 2px'><input type='number' style='border:none;text-align:center;' class='input' name='qty_to_add[]' type='text' value='' min='1' max='999'></td> 
</tr>"; 

}; 

enter image description here

しかし、本当の問題は、私は値が帰属している右側に3列目のセルのみを読み、のみを通過しない方法です更新クエリは、POL_12(15個+ 5個以上)とPOL_54(30個+ 7以上)? OOPやPDOに精通していないので、手続き的なやり方でこれを行う必要があります(ただし、私はすぐにそれを学ぼうと努力しています):/

すべての歓迎です!ありがとうございました!

+0

データ(JavaScript、jQuery)を取得し、AJAXを使用してサーバー側のPHPにデータを渡すには、何らかのクライアント側が必要です。 –

+0

@JayBlanchard - うん、これは私が一番恐れたものだから... PHPだけではこの種の仕事に取り組むことができないのですか? –

+0

いいえ、データを取得して他のフォームと同様にPHPプロセスに送信しない限り、クライアント側の更新を収集する必要があるためです。 –

答えて

1

このシナリオでは、Barmarのアドバイス(この時点で私にとって最も親しかったと思われるため) - forループと組み合わせたフォームで隠しフィールドを使用すると、魅力的に機能しました!

<form method="post" enctype="multipart/form-data">  
    <table style="width:100%" border="2"> 
     <tr> 
     <th style="text-align:center; padding-left: 2px; padding-right: 2px">Location</th> 
     <th style="text-align:center; padding-left: 2px; padding-right: 2px">Qty</th> 
     <th style="text-align:center; padding-left: 2px; padding-right: 2px">Qty to add</th> 
     </tr> 

<?php 

    $locations = mssql_query("my query for reading item name, location and quantity per location "); 

    while ($location = mssql_fetch_array($locations)) 
    { 

     echo" 
       <tr> 
       <input style='border:none;text-align:center;' class='input' name='location_id[]' type='hidden' value='$location[0]'> 
       <input style='border:none;text-align:center;' class='input' name='item_id[]' type='hidden' value='$location[3]'> 
       <td style='text-align:center; padding-left: 2px; padding-right: 2px'>$location[1]</td> 
       <td width='2' style='text-align:center; padding-left: 2px; padding-right: 2px'><input type='number' style='border:none;text-align:center;' class='input' name='current_qty[]' type='text' value='";if (!isset($location[2])) {echo "0";} else {echo $location[2];}; echo "'></td> 
       <td width='50' style='text-align:center; padding-left: 2px; padding-right: 2px'><input type='number' style='border:none;text-align:center;' class='input' name='qty_to_add[]' type='text' value='0' min='0' max='999'></td> 
       </tr>"; 
    }; 

?> 


</table></br> 
<input id="post" class="search" name="submit" type="submit" value="POST" style="position: relative"></br> 
</form> 

<?php 
    if (isset($_POST['submit'])) 
    { 
     $location_id = $_POST['location_id']; 
     $ite_id = $_POST['item_id']; 
     $curr_qty = $_POST['current_qty']; 
     $added_qty = $_POST['qty_to_add']; 

     $rowCount = count($_POST['location_id']); 

     for ($i = 0; $i < $rowCount; $i++) 
     { 
      if ($added_qty > 0) 
      { 
       $query = mssql_query("update [my-table-name] set qty_per_location = cast('$curr_qty[$i]' as decimal (5,2)) + cast('$added_qty[$i]' as decimal (5,2)) where item_id = $item_id[$i] and item_location_id = $location_id[$i]"); 
       echo "<br/><br/><span>Data inserted to DB successfully!</span>"; 
      } 
     } 
    } 

?> 

私は可能な解決策を提案している、他の人に失礼に聞こえるしたくない - それは知識の私の現在の初心者レベルについて理解したので、私は単に、このソリューションを選択しました!代わりに大切な人に敬意を表して、犠牲を払った人たちは貢献するために時間を割いています。ありがとうございました!

関連する問題