2013-07-05 55 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