Как я могу отобразить массив вне для каждого цикла? - PullRequest
0 голосов
/ 27 сентября 2011

Итак, у меня есть корзина для покупок, которая работает нормально, но я хочу отобразить результаты корзины для покупок в контактной форме за пределами каждого цикла.

Проблема, с которой я сталкиваюсь, - это всякий раз, когда я пытаюсьдля отображения $ 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 Ответ

2 голосов
/ 27 сентября 2011

Вы запускаете цикл для всех элементов в корзине, выбираете подробности об этом элементе, а затем сохраняете детали в отдельных переменных. На каждой итерации цикла ранее извлеченные данные перезаписываются следующей строкой извлеченных данных. Таким образом, вы всегда сохраняете данные только из полученного элемента LAST.

Если вы хотите сохранить все данные элемента, вам нужно будет хранить каждую строку в виде стрелки и выводить их позже, или просто выводить каждую строку по мере ее выборки.

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