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>
4

2 回答 2

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;?>>
于 2013-07-05T04:04:35.583 回答
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."';");

像这样将发布数据插入数据库时​​,将其转义始终是一种好习惯。

$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;?>" /> 

如果值中没有这些引号,它将无法正常工作。这应该是主要问题。:)

于 2013-07-05T04:08:17.240 回答