所以我的购物车工作正常,但我希望在每个循环之外的联系表单中显示购物车的结果。
我遇到的问题是每当我尝试显示$ Ptitle时它只显示购物车的最后一个添加内容。不是数组中的完整标题列表。我已经尝试了各种方法来显示数组结果,但似乎都没有。似乎我可以通过
打印数组print_r ($contents);
但仅限于每个循环内部,而不是外部。 下面是代码,抱歉,如果它很乱。任何帮助将不胜感激。
谢谢!
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1: 1;
}
echo '<form action="http://www.changecompanies.net/dev/theme/cart_checkout.php?action=update" method="post" id="cart">';
//$output[] = '<table>';
?>
<table id="cart">
<tr>
<th>Quantity</th>
<th></th>
<th>Item</th>
<th>Product Type</th>
<th>Unit Price</th>
<th>Total</th>
<th>Remove</th>
</tr>
<?php
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM tccproducts WHERE id = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$result = mysql_query("SELECT * FROM tccproducts WHERE Pid ='$id'")or die (mysql_error());
//if (!$result);
//echo "no result";
$myrow = mysql_fetch_array($result) or mysql_error('error!');
$name = $myrow['Ptitle'];
//$name = substr($name,0,40);
$Pprice = $myrow['Pprice'];
$Ptitle = $myrow['Ptitle'];
$Pimage = $myrow['Pimage'];
$Pcat = $myrow['Pcategory'];
$mini = $myrow['Pminimum'];
休息只显示购物车并结束每个循环。
答案 0 :(得分:2)
您正在购物车中的所有商品上运行循环,获取有关该商品的详细信息,然后将详细信息存储在各个变量中。在循环的每次迭代中,先前检索的数据都会被提取的下一行数据覆盖。因此,您只存储从提取的最后一项中获取的数据。
如果要存储所有项目数据,则必须将每行存储在箭头中并在之后输出,或者只是在获取每行时输出。
while($row = mysql_fetch(...)) {
echo <<<EOL
<tr>
<td>{$quantity}</td>
<td>{$row['price']}</td>
etc...
</tr>
EOL;
}