如何在每个循环外显示一个数组?

时间:2011-09-27 18:09:06

标签: php arrays shopping-cart

所以我的购物车工作正常,但我希望在每个循环之外的联系表单中显示购物车的结果。

我遇到的问题是每当我尝试显示$ 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'];

休息只显示购物车并结束每个循环。

1 个答案:

答案 0 :(得分:2)

您正在购物车中的所有商品上运行循环,获取有关该商品的详细信息,然后将详细信息存储在各个变量中。在循环的每次迭代中,先前检索的数据都会被提取的下一行数据覆盖。因此,您只存储从提取的最后一项中获取的数据。

如果要存储所有项目数据,则必须将每行存储在箭头中并在之后输出,或者只是在获取每行时输出。

while($row = mysql_fetch(...)) {
     echo <<<EOL
<tr>
    <td>{$quantity}</td>
    <td>{$row['price']}</td>
    etc...
</tr>
EOL;
}