2016-07-01 9 views
0

Im new in php. эта проблема застряла у меня в течение двух дней. ergh. Я хочу отобразить таблицу, содержащую поле ввода, чтобы пользователь мог вставлять данные и обновлять их в базе данных. Пользователь может изменить все данные в таблице. Я хочу обновлять несколько строк за раз, но в итоге он обновляет только 1 строку (последнюю строку). Кто-нибудь, пожалуйста, помогите мне в этом. Thnks. This are the form. Это следующий код.обновление нескольких строк в одном запросе sql

[<table> 
     <thead> 
     <tr> 
     <td><b>Item Code</b></td> 
     <td><b>Item Barcode</b></td> 
     <td><b>Item</b></td> 
     <td><b>QOH</b></td> 
     <td><b>Quantity</br>Checked</b></td> 
     <td><b>Quantity</br>Order</b></td>        
     </tr> 
     </thead> 
<?php 
$Barcode=$_SESSION\["Barcode"\]; 
$code=$_SESSION\["Code"\]; 
$itemcode=$_SESSION\["Itemcode"\]; 
$guid=$_SESSION\["guid"\]; 

$sql = "SELECT itemmastersupcode.*, itembarcode.*, stock_count_item.*, stock_count.*, po_ex_c.*, d.itemlink_total_qty 
FROM itemmastersupcode 
WHERE stock_count.SupCode = '$code' and stock_count_item.TRANS_GUID = '$guid' 
GROUP BY itemmastersupcode.Itemcode"; 
$result=mysqli_query($conn2,$sql); 
$rowcount = mysqli_num_rows($result); 

while($row = mysqli_fetch_assoc($result)) 
{ 
    ?> 

    <tbody> 
    <tr> 

    <td><?php echo $row\["Itemcode"\]; ?></td> 

    <td><?php echo $row\["Barcode"\]; ?></td> 

    <td><?php echo $row\["Description"\]; ?></td> 

    <td><?php echo $row\["itemlink_total_qty"\]; ?></td> 

    <td><?php echo $row\["qty"\]; ?></td> 

    <form class="form-inline" role="form" method="POST" id="myForm"> 
    <td><input type="number" name="qty" value=""/></td> 

    </tr> 
    </tbody> 

    <input type="hidden" name="itemcode" value="<?php echo $row\["itemcode"\]; ?>"/> 
    <input type="hidden" name="supcode" value="<?php echo $_SESSION\["Code"\] ?>"/> 
    <input type="hidden" name="guid" value="<?php echo $_SESSION\["guid"\] ?>"/> 

<?php 
    } 
    ?> 
    </table> 

    <button name="save" type="submit" ><b>SUBMIT</b></button> 
    </form> 

    <?php 
     if (isset($_POST\["save"\])) 
     { 

     $itemcode=$_POST\['itemcode'\]; 
     $qty=$_POST\['qty'\]; 
     $supcode=$_POST\['supcode'\]; 
     $guid=$_POST\['guid'\]; 


$sql = "UPDATE stock_count, stock_count_item SET stock_count.posted = '1', stock_count_item.qty_order = '$qty' 
WHERE stock_count.TRANS_GUID = '$guid' AND stock_count_item.Itemcode ='$itemcode' 
and stock_count_item.TRANS_GUID = '$guid' ";][1] 
+0

для этого вы должны поставить запрос на обновление в цикле Еогеаспа .. для обновления mulltiple строк. –

+1

Что не так с вашим форматированием? Все эти черты перед квадратными скобками не принадлежат. –

+0

вы указываете, какой столбец будет обновляться 'WHERE'. Поэтому, если 'where' содержит несколько столбцов, он обновит несколько столбцов. Теперь утверждение после 'where' наверняка удовлетворяет условию 1 строки не более. попробуйте изменить их. – MaHDyfo

ответ

0

UPDATE запрос обновит все записи, отфильтрованные по п WHERE. Если нет WHERE не дается, все записи будут обновлены:

UPDATE table1 SET field1='value1'; 

установит field1 столбец всех записей value1.

UPDATE table1 SET field1='value1' WHERE field2='value2'; 

установит field1 столбец value1 или всех записей, где field2 равно value2.

Итак, в вашем случае обновляются записи, найденные с помощью предложения WHERE. Это, кстати, все базовые материалы SQL, поэтому я советую вам читать SQL.

Наконец, также используйте подготовленные операторы в коде для предотвращения SQL-инъекции.

-1
<table> 
     <thead> 
     <tr> 
     <td><b>Item Code</b></td> 
     <td><b>Item Barcode</b></td> 
     <td><b>Item</b></td> 
     <td><b>QOH</b></td> 
     <td><b>Quantity</br>Checked</b></td> 
     <td><b>Quantity</br>Order</b></td>        
     </tr> 
     </thead> 
<?php 
$Barcode=$_SESSION["Barcode"]; 
$code=$_SESSION["Code"]; 
$itemcode=$_SESSION["Itemcode"]; 
$guid=$_SESSION["guid"]; 

$sql = "SELECT itemmastersupcode.*, itembarcode.*, stock_count_item.*, stock_count.*, po_ex_c.*, d.itemlink_total_qty 
FROM itemmastersupcode 
WHERE stock_count.SupCode = '$code' and stock_count_item.TRANS_GUID = '$guid' 
GROUP BY itemmastersupcode.Itemcode"; 
$result=mysqli_query($conn2,$sql); 
$rowcount = mysqli_num_rows($result); 

while($row = mysqli_fetch_assoc($result)) 
{ 
    ?> 

    <tbody> 
    <tr> 

    <td><?php echo $row["Itemcode"]; ?></td> 

    <td><?php echo $row["Barcode"]; ?></td> 

    <td><?php echo $row["Description"]; ?></td> 

    <td><?php echo $row["itemlink_total_qty"]; ?></td> 

    <td><?php echo $row["qty"]; ?></td> 

    <form class="form-inline" role="form" method="POST" id="myForm"> 
    <td><input type="number" name="itemcode[<?php echo $row["itemcode"]; ?>][qty]" value=""/></td> //update here 

    </tr> 
    </tbody> 

<?php 
    } 
    ?> 
    </table> 
    <input type="hidden" name="supcode" value="<?php echo $_SESSION["Code"] ?>"/> //update here 
    <input type="hidden" name="guid" value="<?php echo $_SESSION["guid"] ?>"/>//update here 
    <button name="save" type="submit" ><b>SUBMIT</b></button> 
    </form> 

содержание Php

<?php 
     if (isset($_POST["save"])) 
     { 

     $itemcodes=$_POST['itemcode']; 
     $qty=$_POST['qty']; 
     $supcode=$_POST['supcode']; 
     $guid=$_POST['guid']; 

$sql = "UPDATE stock_count, stock_count_item SET 
stock_count.posted = '1', 
stock_count_item.qty_order = CASE stock_count_item.Itemcode"; 
foreach($itemcodes as $itmcode=>$qty) 
{ 
     $sql.=" WHEN ".$itmcode." THEN ".$qty 
} 
$sql.=" END WHERE stock_count.TRANS_GUID =$guid AND stock_count_item.TRANS_GUID=$guid AND stock_count_item.Itemcode IN (".implode(",",array_keys( $itemcodes)).") "; 


?> 

Надеется, что это поможет

+0

Почему downvote я не знаю, вот я использую случаи для обновления записи, и я надеюсь, что 100% это будет работать –

+0

спасибо за ваш ответ @Naisa purushotham. Я проверю код –

Смежные вопросы