Сеансы / проблема с моей корзиной покупок

Этот вопрос на самом деле является продолжением другого вопроса. Я хотел бы убедиться, что я укажу все подробности в этом.

Я относительно новый программист в Php, и у меня есть это задание, где я должен сделать корзину покупок

Я получаю данные своего продукта из базы данных -> затем я нажимаю на продукт -> он переходит на страницу, где он добавляет productid, productname и цену в сеанс с помощью массива array_push, а затем он возвращается на ту же страницу, где (корзина находится на той же странице, что и в товарной строке)

cart.class.php -> это страница, откуда я изначально получаю данные о продуктах. Используя my getAllproducts (); Я получаю все данные, которые затем прокручиваю, чтобы отобразить 6 продуктов.

<?php class Cart { private $con; private $productid; function __construct(){ $this->con = new PDO('mysql:host=localhost;dbname=#', '#', '#'); } public function getProductDataById($passedId){ $this->productid = $passedId; $statement = $this->con->prepare("SELECT productname, productdescription, productimage, price FROM producten WHERE productid = :productid"); $statement->execute(array("productId" => $this->productid)); $data = $statement->fetch(); return($data); } public function getAllproducts(){ $statement = $this->con->prepare("SELECT productid, productname, productdescription, productimage, price FROM producten"); $statement->execute(); $data = $statement->fetchAll(); return($data); } } ?> 

Затем я использую Cart.php, чтобы показывать свои продукты. На этой странице я просматриваю продукты, а затем, когда кто-то нажимает на заказ (bestellen) productid, имя продукта и цена будут отправлены на add_to_cart.php

 <?php /*errors */ error_reporting(E_ALL); ini_set("display_errors", 1); /*Php classes */ require_once("../classes/cart.class.php"); $products = new cart(); $data = $products->getAllproducts(); ?> <title>Side Cart</title> </head> <body> <header> <div id="cd-cart-trigger"><a class="cd-img-replace" href="#0">Cart</a></div> 

 <div class="container productline"> <div class="row"> <?php foreach($data as $value){ echo '<div class="col-md-4 productcage">'; echo '<h2 class="product_name">'.$value["productname"].'</h2>'; echo '<p class="price_tag">€'.$value["price"].' euro</p>'; echo '<p class="#">'.$value["productdescription"].'...</p>'; echo '<a href="/shoppingcart/php/add_to_cart.php?productid='.$value["productid"] . "&productname=" . $value["productname"]. "&price=" . $value["price"].'" class="btn btn_order addcart">Add to cart <span class="glyphicon glyphicon-shopping-cart"></span></a><br/><br/>'; echo '</div>'; } ?> </div> </div> <div id="cd-shadow-layer"></div> // Here's where the shopping cart starts <?php session_start(); if(isset($_SESSION["cart"]) && count($_SESSION["cart"])> 0) 

{

 echo '<div id="cd-cart">'; echo '<h2>Cart</h2>'; echo '<ul class="cd-cart-items">'; echo '<li>'; foreach($_SESSION['cart'] as $id => $value) { echo 'Product Name ' . $value["productname"] . '<br/>'; echo 'Product ID ' . $value["productid"] . '<br/>'; echo 'Product Price ' . $value["price"] . '<br/>'; echo '<br/>'; } echo '</li>'; echo '</ul>'; echo '<div class="cd-cart-total">'; echo '<p>Total <span>$39.96</span></p>'; echo '</div>'; echo '<a href="#0" class="checkout-btn">Checkout</a>'; echo '<p class="cd-go-to-cart"><a href="#0">Go to cart page</a></p>'; echo '</div>'; } ?> 

Затем я перехожу к add_to_cart.php

Это отправляет сеанс обратно в cart.php, где ниже я хочу зацикливать продукты в корзине покупок

 <?php session_start(); if(empty($_SESSION['cart'])){ $_SESSION['cart'] = array(); } array_push($_SESSION['cart'], $_GET['productid'], $_GET['productname'], $_GET['price']); ?> <p>Het product is toegevoegd aan uw winkelwagen</p> <a href="../cart.php">Naar winkelwagen</a> 

TL; DR, когда я пытаюсь выполнить цикл $ value ["productname"] my foreach возвращает Warning: Недопустимое смещение строки 'productname'

Я не знаю, как сделать все это, потому что я все еще довольно новичок в PHP. Если кто-то хочет потратить время на выяснение моих глупых ошибок, это будет очень удивительно.

Надеюсь, я был достаточно ясен. Приносим извинения за неудобства

  foreach($_SESSION['cart'] as $id => $value) { echo ($_SESSION[ 'cart' ][ $id ] . " " . $value); //1 1solexfiets1 solexfiets115.99 15.99 var_dump(($_SESSION[ 'cart' ][ $id ] . " " . $value)); // string(3) "1 1" string(23) "solexfiets1 solexfiets1" string(11) "15.99 15.99" } 

Я изменил array_push на

  array_push($_SESSION['cart'], array('productid' => $_GET['productid'], 'productname' => $_GET['productname'], 'price' => $_GET['price'])); 

и когда я печатаю_r на cart.php, я получаю следующую обратную

 Array ( [0] => 1 [1] => solexfiets1 [2] => 15.99 [3] => Array ( [productid] => 1 [productname] => solexfiets1 [price] => 15.99 ) ) 

Но когда я пытаюсь пройти через него так

  foreach($_SESSION['cart'] as $id => $value) { echo 'Product Name ' . $value["productname"] . '<br/>'; echo 'Product ID ' . $value["productid"] . '<br/>'; echo 'Product Price ' . $value["price"] . '<br/>'; echo '<br/>'; } 

Я все равно получаю ту же ошибку

Предупреждение: недопустимое смещение строки 'productname'

Так есть ли еще что-то, что я делаю неправильно? Теперь я понимаю, что мне нужно отправить коллекцию вещей вместо того, что я делал раньше, но я до сих пор не могу понять, почему ее неудача сейчас

Спасибо всем, что помогли мне! Кажется, я решил проблему. Я принял все советы, и у меня, наконец, появилось рабочее заявление. Теперь продукты заказываются и появятся в корзине покупок

Снова благодаря всем, кто помог мне!

Solutions Collecting From Web of "Сеансы / проблема с моей корзиной покупок"