2013-07-05 90 views
0

我有一個頁面updprod.phpupdate.php。頁面update.php顯示一個產品列表,旁邊有一個編輯和刪除按鈕。當我點擊編輯鏈接時,會顯示另一個頁面,其中包含要禁用字段名稱和品牌的產品的名稱,品牌和價格。我只需要改變價格。產品名稱,品牌和價格沒有相應的顯示在頁面

發生了什麼事情是,當我點擊編輯鏈接時,顯示的名稱,品牌和價格是列表中的最後一個產品。名稱和品牌也沒有完全顯示。如果我改變價格,我的表格會相應更新。

我遇到的主要問題是產品名稱,品牌和價格,旁邊我點擊編輯鏈接的產品沒有出現在文本框中,因爲它應該是。

下面是我updprod.php代碼

<?php 
    include_once("db_connect.php"); 

    if (isset($_POST['update'])) 
    { 
     $prod_id = $_POST['prod_id']; 

     $prod_name = $_POST['prod_name']; 
     $prod_brand = $_POST['prod_brand']; 
     $prod_price = $_POST['prod_price']; 

     // checking empty field 
     if (empty($prod_price)) 
     { 
      // if name field is empty 
      if (empty($prod_price)) 
      { 
       echo "<font color='red'>Price field is empty.</font><br/>"; 
      } 
     } 
     else 
     { 
      // updating the table 
      $result = mysql_query("UPDATE tblretprod 
       SET prod_price='$prod_price' WHERE prod_id=$prod_id"); 
      // redirecting to the display page. In our case, it is index.php 
      header("Location: update.php"); 
     } 
    } 
?> 

<?php 
    $prod_id = $_GET['prod_id']; 
    $result = mysql_query("SELECT a.prod_name, a.prod_brand, b.prod_price 
      FROM tblproduct a, tblretprod b where a.prod_id = b.prod_id") 
      or die(mysql_error()); 

    while ($res = mysql_fetch_array($result)) 
    { 
     $prod_name = $res['prod_name']; 
     $prod_brand = $res['prod_brand']; 
     $prod_price = $res['prod_price']; 
    } 
?> 

<html> 
<title>Edit Product</title> 
<body> 
<a href="#">Home</a> 
<br/><br/> 
<form name="edit" method="post" action="updprod.php"> 
<table border="0"> 
<tr> 
<td>Product Name</td> 
<td> 
    <input disabled="disabled" 
     type="text" name="prod_name" value=<?php echo $prod_name;?>/> 
</td> 
</tr> 
<tr> 
<td>Brand</td> 
<td> 
    <input disabled="disabled" 
     type="text" name="prod_brand" value=<?php echo $prod_brand;?>> 
</td> 
</tr> 
<tr> 
<td>Product Price</td> 
<td> 
    <input type="text" name="prod_price" value=<?php echo $prod_price;?>> 
</td> 
</tr> 
<tr> 
<td> 
    <input type="hidden" name="prod_id" value=<?php echo $_GET['prod_id'];?>> 
</td> 
<td><input type="submit" name="update" value="Update"></td> 
</tr> 
</table> 
</form> 

</body> 
</html> 

回答

0

你的循環放置不正確。您需要按照此處所述將其移下。

<html> 
<title>Edit Product</title> 
<body> 
<a href="#">Home</a> 
<br/><br/> 
<form name="edit" method="post" action="updprod.php"> 
<table border="0"> 
while($res=mysql_fetch_array($result)) 
{ 
$prod_name = $res['prod_name']; 
$prod_brand = $res['prod_brand']; 
$prod_price = $res['prod_price']; 
<tr> 
<td>Product Name</td> 
<td> 
    <input disabled="disabled" type="text" name="prod_name" value=<?php echo $prod_name;?>/>  </td> 
</tr> 
<tr> 
<td>Brand</td> 
<td> 
    <input disabled="disabled" type="text" name="prod_brand" value=<?php echo $prod_brand;?>>   </td> 
</tr> 
<tr> 
<td>Product Price</td> 
<td> 
    <input type="text" name="prod_price" value=<?php echo $prod_price;?>>  
    <input type="hidden" name="prod_id" value=<?php echo $_GET['prod_id'];?>> 
</td> 
</tr> 
<?php } ?> 
<tr> 
<td><input type="submit" name="update" value="Update"></td> 
</tr> 

除了循環調整我讓你也將需要重命名你的元素名稱包括[]如果你要處理的顯示的產品列表。例如

<input type="text" name="prod_price[]" value=<?php echo $prod_price;?>> 
+0

你好,謝謝你的回覆。在點擊編輯時,所有的產品都被顯示出來,而不是我點擊編輯的那個。我可以知道爲什麼這些名字沒有完全顯示出來嗎? – user2534128

0

我注意到這裏有兩件事情。您應該使用mysqli而不是mysql_query,因爲它已被棄用。 http://php.net/manual/en/function.mysql-query.php

其次,您的更新查詢應與此類似。

$result=mysql_query("UPDATE tblretprod SET prod_price='".$prod_price."' WHERE prod_id='".$prod_id."';"); 

它總是逃脫後的數據時,它會被插入到像這樣的DB很好的做法。

$prod_name = mysql_real_escape_string($_POST['prod_name']); 

沒有必要做這個的兩倍。

if(empty($prod_price)) 
{ 
    //if name field is empty 
    if(empty($prod_price)) 
    { 
     echo "<font color='red'>Price field is empty.</font><br/>"; 
    } 

} 

您忘記了某些輸入中的引號。請參閱下面的代碼來解決它。

<input disabled="disabled" type="text" name="prod_name" value="<?php echo $prod_name; ?>" /> 

<input disabled="disabled" type="text" name="prod_brand" value="<?php echo $prod_brand; ?>" /> 

<input type="text" name="prod_price" value="<?php echo $prod_price;?>" /> 

沒有這些引號的值將無法正常工作。這應該是主要問題。 :)

+0

你好,謝謝。我使用下面提供的代碼,但我正在顯示的所有產品,而不是我旁邊單擊編輯的那個。 – user2534128

+0

這裏同樣的問題。你忘了價值中的引號。 '>'應該是'「>' – Chris78

+0

在點擊更新表單之前,您需要確保實際上顯示的是prod_id。看看你的html,並確保它不是空的。 – Chris78

相關問題