将某些表单元格值传递给SQL更新查询

时间:2017-02-13 20:11:19

标签: php

到目前为止,我觉得我有点不寻常的情况......我构建了一个HTML表格,通过读取和从SQL DB中的行到显示基本上是数组的$ locations变量来显示来自不同位置的数量 - 这是代码:

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(但我正在努力学习它):/

请指教,欢迎所有建议!谢谢你们!

1 个答案:

答案 0 :(得分: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>";
            }
        }
    }

 ?>

我不想对他人表示不尊重,这提出了可行的解决方案 - 我选择这个解决方案仅仅是因为我现在的新手知识水平是可以理解的!相反,对于那些牺牲了所有人的大喊大叫。有点时间做出贡献。感谢y&#39;所有!