【发布时间】:2014-09-02 15:05:33
【问题描述】:
我使用 PHP 创建了一个购物车页面。现在我遇到的问题是,当我从产品列表中将产品添加到购物车时,发生的情况是只添加了列表中的第一个产品。
当我添加另一个产品时(因为列表中的每个产品都有自己的“添加到购物车”按钮),第一个产品会再次添加。不管我选择什么项目,它最终还是会添加第一个产品。
我错过了什么吗?
这是我的代码:
产品列表:
<?php do { ?>
<tr>
<td colspan="2"><font face="times new roman" size="3"><center><?php echo $prorow['pname']; ?></td>
<td colspan="1"><font face="times new roman" size="3"><center><?php echo $prorow['pdesc']; ?></td>
<td colspan="1"><font face="times new roman" size="3"><center><?php echo $prorow['price']; ?></td>
<td colspan="1"><center><img src="admin/<?php echo $prorow['image']; ?>" width="80" height="80" />
<td colspan="1">
<input type="submit" name="addtocart" value="Add to Cart">
</td>
</tr>
<?php } while ($prorow = mysqli_fetch_assoc($result)); ?>
我正在使用隐藏的输入类型传递值。
加入购物车:
<?php
ob_start();
$con = mysqli_connect('localhost', 'abra', 'abra','abra') or die("Could not connect database");
$cname = mysql_escape_string($_POST['user']);
$pid=mysql_escape_string($_POST['proID']);
$pname=mysql_escape_string($_POST['proName']);
$price=mysql_escape_string($_POST['proPRICE']);
$qty=mysql_escape_string($_POST['qty']);
$addtocart = "INSERT INTO cart_track (bid, cName, pname, price, qty) VALUES ('$pid', '$cname', '$pname', '$price', '$qty')";
mysqli_query($con,$addtocart);
header("location:showcart.php");
exit;
ob_end_flush()
?>
显示购物车:
<?php
$con = mysqli_connect('localhost', 'abra', 'abra','abra') or die("Could not connect database");
//Check if user wants to checkout or shop:
if(isset($_POST['checkout']))
{
header("location:orders.php");
}
if(isset($_POST['shop']))
{
header("location:prodtable.php");
}
//retrieve items . use session_id and/or datetime
//$PHPSESSID=session_id();
$showcart = "SELECT * from cart_track INNER JOIN products ON bid=pId WHERE bid=pId";
$result=mysqli_query($con, $showcart);
if(!$result)
{
$err=true;
//i recommend writing this error to a log or some text file, for security reasons.
$errmsg=mysql_error();
}
else
{
$err=false;
$num=mysqli_num_rows($result);
}
?>
我怀疑错误出在产品列表代码上,但我也检查了 AddtoCart 文件。
【问题讨论】:
-
第一个sn-p,能不能把整个表格贴一下(貌似应该是表格)?您还混合了
mysqli和mysql,这是做不到的。选择其中一个(最好是mysqli而不是mysql) -
嗯,其余的 sn-p 都是纯 html,除了与数据库和表的连接部分,它们都很好。我怀疑 do while 循环。还是不行?
-
你如何告诉 AddToCart 什么产品 id 添加到购物车?
-
您所显示的只是一个提交按钮。您提到了隐藏的输入,但我没有看到任何输入。您如何设置正确的帖子数据可能是问题