我有一个页面updprod.php
和update.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 :(得分: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;?>" />
如果没有值中的引号,它将无法正常工作。这应该是主要问题。 :)