2013-07-05 53 views
0

我編輯了我的代碼,如下所示,但問題是每次點擊編輯鏈接時,所有產品都會顯示,而不是隻顯示旁邊的一個點擊編輯鏈接的產品。顯示所有產品而不是隻顯示一個

注意:很抱歉發佈了另一個與我的另一個問題有關的問題。我無法添加任何評論。

<?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"); 
    $result=mysql_query("UPDATE tblretprod SET prod_price='".$prod_price."' WHERE prod_id='".$prod_id."';"); 

    //redirectig 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()); 

?> 
<html> 
<title>Edit Product</title> 
<body> 
<a href="#">Home</a> 
<br/><br/> 
<form name="edit" method="post" action="updprod.php"> 
<table border="0"> 
<?php 
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 type="text" disabled="disabled" name="prod_name" value = "<?php echo $prod_name;?>"> </td> 
</tr> 
<tr> 
<td>Brand</td> 
<td> 
    <input type="text" disabled="disabled" 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> 
</table> 
</form> 

</body> 
</html> 
+0

因此可以發佈您的編輯鏈接示例? –

+1

請記住從$ _GET請求(使用mysqli_real_escape_string,htmlspecialchars ..)來清理所有用戶輸入,並使用PDO/mysqli與您的數據庫進行交互。不要相信用戶! – Lan

回答

3

添加在你的SELECT查詢在WHERE子句:

AND a.prod_id = ".$prod_id." 

查詢:

"SELECT 
    a.prod_name, 
    a.prod_brand, 
    b.prod_price 
FROM 
    tblproduct a, tblretprod b 
where 
    a.prod_id = b.prod_id 
    AND a.prod_id = ".intval($prod_id)."" 

爲了防止SQL注入我已經添加了查詢安全intval功能像的Kickstart好指出。

+0

非常感謝你。它解決了這個問題。我如何關閉我打開的問題? – user2534128

+0

@ user2534128很高興我可以幫助你:)你需要接受一個答案 – Stephan

+0

這將做到這一點,但對更早的評論進一步確保$ prod_id是一個安全的價值。如果它是一個id字段,那麼我會認爲它是一個整數,在這種情況下,只要使用intval($ prod_id)將它添加到select時可能是最簡單的安全方法。 – Kickstart