<?php session_start(); print '<h1>Your Shopping Cart:</h1>'; print '<h4>The Product ID: '.$_SESSION['id'].' </h4>'; print '<h4>The Quantity: '.$_SESSION['quantity'].' </h4>'; $dbc = mysql_connect('127.0.0.1', 'root', ''); mysql_select_db('product', $dbc); $query = "SELECT * FROM prod WHERE id='".$_SESSION['id']."'"; if ($r = mysql_query($query, $dbc)) { while ($row = mysql_fetch_array($r)) { print "<p><b>Product Name: {$row['name']}<br /> The Price: {$row['price']}<br /> Shipping Cost: {$row['shipping']}<br /> </p><hr />\n"; }} ?>
Этот код для корзины с сеансом, но проблема в том, что он хранит только один продукт.
Например, если вы приобрели продукт A и продукт Cart B, удалите B, затем добавьте продукт. Пожалуйста, помогите мне. Я хочу добавить несколько продуктов и напечатать на экране ##
Добавьте еще один уровень в корзину:
$_SESSION['cart'][$productID]['quantity']; ^^^^^^^^^^^^^
поэтому вы сохраняете данные о каждом продукте. Прямо сейчас вы используете один уровень, который вы постоянно переписываете по мере добавления новых продуктов.
Поздороваться с php-массивами: http://www.php.net/manual/en/book.array.php 🙂
В основном вместо:
$_SESSION['id'] = 1234;
Ты захочешь:
$_SESSION['products'][] = array('id'=>1234, 'quantity'=>10);
Затем вы будете перебирать $ _SESSION ['products'], как
foreach($_SESSION['products'] AS $product){ echo $product['id']; }
Вы должны поддерживать свою корзину в переменной сеанса $_SESSION['cart']
. При добавлении новых продуктов вы можете использовать это,
$_SESSION['cart'] = array(); //initialize once array_push($_SESSION['cart'], array("id" => $id, "quantity" => $q)); print_r($_SESSION['cart']);
Таким образом, вы можете иметь несколько продуктов в корзине.
Для конкретной структуры CodeIgniter существует класс, который обеспечивает функциональность тележки. Проверьте это .
$_SESSION['cart'] = array(); $_SESSION['cart']['1'] = 2;//add product A,id=1,quality=2 $_SESSION['cart']['2'] = 3;//add product B,id=2,quality=3 //get all items foreach($_SESSION['cart'] as $item) { print_r($item); }