php
2017-02-13 27 views 0 likes 
0

直到现在,我觉得对我来说有点不寻常的情况......我构建了一个HTML表格,它通过读取SQL行数据库中的行并将其从不同位置变量,本质上是一个数组 - 这里是代码:将某些表格单元格值传递给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

但真正的问题是怎么做的我只读在第三列在右边的细胞,具有值的估算,只有那些通过更新查询将进一步只更新包含位置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>"; 
      } 
     } 
    } 

?> 

我不想听起来不尊重别人,那建议可能的解决方案 - 我选择了这个解决方案,只是因为这是可以理解的知识,我现在的新手的水平!相反,对所有那些牺牲了一点点时间来贡献的人来说,这是一个很大的呐喊。谢谢你们!

相关问题