2014-01-10 32 views
0

我有一個Prestashop的現有數據庫,我對它進行了小的修改。我做了一個單獨的PHP頁面,它從表格中獲取產品的數據(僅我需要的數據),並向我展示所有表格中的產品。我也有一個更新產品的功能,在這個功能上我按下EDIT。如何用一個查詢更新SQL中的所有行?

因此,簡單地說,我可以每次點擊更新一個產品。但現在我有大約220種產品,爲了更新每個產品的價值(價格),現在,我必須點擊每個產品的EDIT 220次。

有沒有一種方法來查詢,以便在點擊按鈕後更新所有行?

婁我會告訴你從我的劇本的一些基本部分組成:

GET功能:

<?php 

$strSQL = "SELECT * FROM ps_product"; 
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); 

while($objResult = mysql_fetch_array($objQuery)) 
{ 
?> 
<!-- HTML CODE --> 
<? } ?> 

每個產品

if($_POST["hdnCmd"] == "Update") 
{ 
    $strSQL = "UPDATE ps_product_shop SET "; 
    $strSQL .="id_product = '".$_POST["txtEditid_product"]."' "; 
    $strSQL .=",price = '".$_POST["txtEditprice"]."' "; 
    $strSQL .=",active = '".$_POST["txtEditactive"]."' "; 
    $strSQL .="WHERE id_product = '".$_POST["hdnEditid_product"]."' "; 
    $objQuery = mysql_query($strSQL); 
    if(!$objQuery) 
    { 
     echo "Error Update [".mysql_error()."]"; 
    } 

} 
更新功能

$ _POST [「hdnEditid_product]是從表中提取的產品id值。


請幫助我瞭解如何使類似的**更新功能**,將同時更新所有行(產品)?

例如,我必須解決這個代碼:

if($_POST["UPDATEALLPRODUCTS"] == "Update") 
{ 
    $strSQL = "UPDATE ps_product_shop SET "; 
    $strSQL .=",price = '".$_POST["txtEditprice"]."' "; 
    $strSQL .="WHERE id_product = '".$_POST["hdnEditid_product"]."' "; 
    $objQuery = mysql_query($strSQL); 
    if(!$objQuery) 
    { 
     echo "Error Update [".mysql_error()."]"; 
    } 
} 

但我必須添加/更改此處:

$strSQL .="WHERE id_product = '".$_POST["hdnEditid_product"]."' "; 
+0

每個產品有不同的價格價值! – AndrewS

+0

爲什麼不通過調用腳本來調用任何jQuery/ajax腳本來更新相應的記錄,從而降低pricebox.rather的焦點,而不是在填充重新繪製後單擊更新。它會讓你更容易 – Abhishek

+0

,你想更新所有行的**價格**? –

回答

1

這個怎麼樣?

製造陣列是這樣的:ID =>價格,然後:

 $prices = array(
      1=>300, 
      5=>180, 
      ... 
     ); 
     foreach ($prices as $id => $price) { 
      $query = "UPDATE ps_product_shop SET price='".$price."' WHERE 
      id_product='".$id."' "; 
      mysql_query($query); 
     } 
+0

你可以製作這個數組嗎? –

+0

我認爲你的答案是純粹的!但我會嘗試對其進行一些更改。我的意思是我想要根據來自DATABASE的舊值生成id和值.... – AndrewS

2

要更新所有行相同的值運行此查詢

UPDATE ps_product_shop SET price='".$_POST["txtEditprice"]."'; 

注意:ps_products_shop中的每個記錄都會得到相同的值 價錢。

+0

Thanx爲您的重播!但我想你的回答是全球性的。在我的情況下,每個產品有不同的價格,查詢將如何知道產品ID和價格? – AndrewS

+0

等一下,你的意思是你想改變輸入字段的值,然後對每個id的所有行運行updatequery?然後,這是一個PHP問題,而不是MySQL –

+0

值是我的前端更新一個不同的PHP腳本。這現在起作用了。這是一個數學計算,它會改變每個產品的價格值。這個值在每個產品領域。 – AndrewS

1

一種方式做到這一點,如果你堅持使用單個查詢:

<?php 
    $product_updates = array("1" => "500", "2" => "1299.99"); 
    $sql_query = "UPDATE my_database.products SET price = CASE id "; 
    foreach ($product_updates as $key => $value) { 
     $sql_query .= "WHEN '$key' THEN '$value' "; 
    } 
    $sql_query .= "END;"; 
    mysql_query($sql_query); 
?> 
1

我假設的頁面已經更新的價格/信息,你需要,因此它只是拔毛PHP變量進行

UPDATE ps_product_shop SET price 
= CASE 
WHEN id_product= $id_product_1 
THEN '$edited_price_1' 
WHEN id_product = $id_product_2 
THEN '$edited_price_2' 

沒有看到形式結構是很難看到什麼是正確的變量名稱,但希望你可以把代碼,並用它去,我必須做同樣的事情,並讓PHP自動構建的曲使用這種方法