2013-03-12 30 views
1

我正在從一個SQL數據庫中獲取數據,這是我在表單中查找的數據。然而,我有一個更新頁面,我不知道如何根據用戶希望更改的內容來更新表格,從而更新數據庫。更新PHP/MYSQL中的單行

這就是我的意思。說在運行查詢後,我有輸出:

Product | Descption | Quantity | Price | StartDate | End Date 
chcolates xyz   2.0   4.99  2013-03-11 2013-03-20  
sweets  yum!   1.0   1.99  2013-03-15 2013-03-27 

所以這是由排隊分貝輸出作爲表在PHP(即該賣家出售提到的2個產品)。

現在說用戶想要更新第一行並更改數量例如。那我該怎麼做?我知道我可以使用SQL QUERY UPDATE TABLE賣家在哪裏?

我應該輸出一個表格還是表格?用戶能夠更新他們希望的任何行以及任何字段。 (即可以更新他們想要銷售的產品,descp,數量等)

我該如何去做這樣的事情?請有任何想法嗎?

====編輯====== 感謝大家的建議。我有一個格式錯誤。我在我的PHP代碼和運行查詢這樣後:

while($rows = mysql_fetch_assoc($querySellers)){ 
echo 'Product:'.'<br />'.'<input type="text" value = $rows[\'ProductName\']>'; 

這似乎並沒有被打印從數據庫查詢的價值,而不是打印

$rows['ProductName'] 

在文本框內這是一個格式錯誤的權利?我能做些什麼來解決這個問題?最初,productName是一個下拉組合框...有沒有辦法我可以這樣做,當我運行查詢輸出顯示爲SELECTED組合框選項?

再次感謝。

+1

你需要解釋(在某種程度上)傳給你希望更新的行的唯一標識符。這就是爲什麼主鍵被髮明的原因,這就是爲什麼你通常可以看到一些數字或一系列字符通過GET方法在表單中傳遞。這就像* how *一樣。現在就實際實現這個想法而言 - 好吧,這是發現的有趣部分,所以我會跳過這個:) – 2013-03-12 16:14:36

回答

2

您應該做的最好的事情是對錶中的項目實施ID列(自動增加可能?)或某個唯一標識符(Primary Key)。這樣一來,你可以很容易地通過做

UPDATE table SET value = 'value' WHERE id = $id 

在你的情況下編輯一個項目,你沒有任何唯一標識,所以你就必須建立一個大型WHERE聲明,包括一切即。

WHERE Product = 'chocolates' AND Description = 'xyz' AND .. AND.. 

並且這可能不是完全獨特的。

編輯 :(參考編輯) 問題是PHP如何處理單引號與雙引號。 PHP將不是評估單引號中的變量,但會用雙引號。

$myvar = "value"; 
echo '$myvar'; // output: $myvar 
echo "$myvar"; // output: value 

所以,你需要改變你的建築

echo "Product: <br /> <input type=\"text\" value = \"{$rows['ProductName']}\">"; 

注意單引號的變化將翻一番,雙引號的轉義。 至於你對所選選項的問題。您需要一種方法來確定選擇哪項,並添加IF語句和代碼以將Selected屬性添加到該選項。

+0

您將不得不遍歷返回的項目來構建表格。您還必須將'ID'包含爲'hidden'字段或作爲url中的值。 'edit.php?item = $ id'所以你知道哪個項目正在被修改 – UnholyRanger 2013-03-12 16:44:00

+0

嗨,我已經在賣家表中有一個ID是AI。問題是......每個賣家在登錄時賣的東西都不一樣。所以這個賣家賣的是兩款上市的產品。問題是..我想我需要在一個while循環中獲得一個窗體..所以說: '\t while($ rows = mysql_fetch_assoc($ querysellers)){ //輸出形式與數據? 產品<選擇名稱= 「產品」 值= 「<= $行[ '產品名稱']?> <選項值=」 1" > Chcolate <選項值= 「2」>甜食 ' 我想也許吧? – Jsmith 2013-03-12 16:48:44

+0

基本上我想要做的是......回顧像我這樣的數據把這些數據放在一個可能或者表格中,這樣用戶可以更好地編輯。一旦用戶編輯了字段,然後使用SQL查詢更新數據庫。 產品名稱,開始日期和結束日期都是SELECT OPTION字段,其餘都是TEXT字段。這是否會使衰老? – Jsmith 2013-03-12 16:51:03

0

您需要擁有一個自動增加主鍵的id,而不是null。 然後

UPDATE `your_db_table`.`column_table` SET `Product` 
= 'Sweet Stuff' WHERE 'Product`.`prod_id` = 1 LIMIT 1; 

隨後的剩下的東西是顯然受到@UnholyRanger

+0

建議編輯:刪除「限制1」,因爲如果真的唯一,只會考慮一個項目,因此不需要。 – UnholyRanger 2013-03-12 16:38:15