产品名称,品牌和价格未在页面中相应显示

时间:2013-07-05 03:55:51

标签: php mysql

我有一个页面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>

2 个答案:

答案 0 :(得分: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;?>>

答案 1 :(得分: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;?>" /> 

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