не могу получить общий итог корзины покупок PHP / MySQL - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь получить общий итог моей корзины покупок, но я просто не могу заставить его работать, и мне интересно, если это так, как я подошел к своему коду, я использовал цикл foreach, чтобы получить идентификатор из сеансамассив, а затем перебрать результаты, однако, когда я пытаюсь сделать запрос SUM, ответ просто выводит отдельные цены в виде массива, в отличие от сложения их вместе.Будет ли лучше хранить цену в 2d массиве?

if(!isset($_SESSION['cart'])){//
$_SESSION['cart']=array();//creating session array to store items id
}
    <?php
                        echo'<table class="table">';
                            echo'<tr>';
                            echo'<th>Item</th>';
                            echo'<th>Code</th>';
                            echo'<th>Description</th>';
                            echo'<th>Cost(GBP)</th>';
                            echo'<th>Remove</th>';
                            echo'</tr>';

                            foreach ($_SESSION['cart'] as $value){
                                $z = mysql_query('SELECT * FROM product_item where id="'.$value.'"');
                                while($row = mysql_fetch_array($z)){
                                    echo'<tr>';
                                    echo'<td><img src="images/'.$row['path'].'.jpg" alt="'.$row['alt'].'" width="65" height="65"/></td>';
                                    echo'<td>'.$row['code'].'</td>';
                                    echo'<td>'.$row['description'].'</td>';
                                    echo'<td><p>&pound;'.$row['price'].'</p></td>';
                                    echo'<td><p><a title="remove from shopping cart" href="cart.php?remove='.$value.'">X</a></p></td>';
                                    echo'</tr>';                                
                                }


                                // this is where i want to get total cost
                                $y = mysql_query('SELECT SUM(price) as total_cost FROM product_item where id="'.$value.'"');
                                while($row = mysql_fetch_array($y)){
                                    echo $row['total_cost'];
                                }

                            }

                            echo'<tr>';
                            echo'<td></td>';
                            echo'<td></td>';
                            echo'<td></td>';
                            echo'<td><p>Total</p></td>';
                            echo'<td></td>';
                            echo'</tr>';
                            echo'</table>';
                        }
                    ?>
                    ?>

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Почему не внешняя переменная?

if(!isset($_SESSION['cart'])){//
$_SESSION['cart']=array();//creating session array to store items id

$cartTotal = 0; //This is where you store the total
}
    <?php
                        echo'<table class="table">';
                            echo'<tr>';
                            echo'<th>Item</th>';
                            echo'<th>Code</th>';
                            echo'<th>Description</th>';
                            echo'<th>Cost(GBP)</th>';
                            echo'<th>Remove</th>';
                            echo'</tr>';

                            foreach ($_SESSION['cart'] as $value){
                                $z = mysql_query('SELECT * FROM product_item where id="'.$value.'"');
                                while($row = mysql_fetch_array($z)){
                                    $cartTotal += $row['price'];
                                    echo'<tr>';
                                    echo'<td><img src="images/'.$row['path'].'.jpg" alt="'.$row['alt'].'" width="65" height="65"/></td>';
                                    echo'<td>'.$row['code'].'</td>';
                                    echo'<td>'.$row['description'].'</td>';
                                    echo'<td><p>&pound;'.$row['price'].'</p></td>';
                                    echo'<td><p><a title="remove from shopping cart" href="cart.php?remove='.$value.'">X</a></p></td>';
                                    echo'</tr>';                                
                                }
                            }
                            echo $cartTotal; //after running through all the items, you can show the total

                            echo'<tr>';
                            echo'<td></td>';
                            echo'<td></td>';
                            echo'<td></td>';
                            echo'<td><p>Total</p></td>';
                            echo'<td></td>';
                            echo'</tr>';
                            echo'</table>';
                        }
                    ?>
                    ?>
0 голосов
/ 16 февраля 2012

Вы можете просто вычислить сумму в PHP, когда вы просматриваете товары в корзине. Если вы действительно хотите сделать это в SQL, вы должны сделать это вне цикла foreach, поскольку это дает вам только цену одного элемента за раз.

Используя implode(), вы можете объединить все идентификаторы товаров в корзине в один список для использования в вашем запросе:

$y = mysql_query("SELECT SUM(price) AS total_cost FROM product_item WHERE id IN (" . implode(", ", $_SESSION['cart']) . ")";
0 голосов
/ 16 февраля 2012
'SELECT SUM(price) as total_cost FROM product_item where id="'.$value.'"'

Если ваш идентификатор уникален, он всегда будет иметь значение «цена». Более того, ваша сумма в foreach. Если вы хотите получить общую цену, я предлагаю вам сохранить значение цены в переменной php и суммировать в foreach, тогда вам просто нужно отобразить эту переменную в конце.

И использование "select *" не рекомендуется, вы должны поставить поле, которое вы хотите получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...