【发布时间】:2022-01-10 06:56:31
【问题描述】:
我正在尝试创建一个基于数组的购物车,但我似乎无法在我的购物车中添加一个以上的商品。有人能帮我吗?? 上面你看到了数组,所以它确实继续将东西放入我的数组中,但它只显示一个项目我做错了什么?已经尝试解决这个问题 2 个月了
// code for the shopping cart
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errrors', '1');
// session_destroy();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>Cart</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Bootstrap icons-->
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
<link href="css/stylecart.css" rel="stylesheet" />
<script src="js/scripts.js" async></script>
</head>
<style>
body {
font-size: 20px;
}
</style>
<body>
<a class="back" href="index.php"> <i class="bi bi-arrow-left-circle-fill bi-5x"></i></a>
<?php
include "config.php";
print_r($_SESSION['basket']);
array_push($_SESSION['basket'], $_GET['broodjes_ID']);
// oke het is neit geweldig maar het laat iets s
?>
<div class="text-center" style="font-size: 100px;">🛍</div>
<h2 class="text-center">Winkelmandje</h2><br>
<section class="container content-section">
<!-- <h2 class="section-header">CART</h2> -->
<div class="cart-row">
<span class="cart-item cart-header cart-column">ITEM</span>
<span class="cart-price cart-header cart-column">PRICE</span>
<!-- <span class="cart-quantity cart-header cart-column">QUANTITY</span> -->
</div>
<?php
$broodjes_ID = $_GET['broodjes_ID'];
//onthouden van vorige get request
//$count = count($_SESSION['basket']); // count basket puts 3 times the same item in the shopping cart
if($_SESSION['basket'] > 0){
for($i = 0; $i<$_SESSION['basket']; $i++){
//$basket = $_SESSION['basket'][$i];
$sql = "SELECT broodjes_ID, broodnaam, prijs FROM broodjes WHERE broodjes_ID = ?";
// uitvoeren, resultaat tonen in tabel.
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $broodjes_ID);
$stmt->execute();
$result = $stmt->get_result(); // get the mysqli result
//while loop zorgt er volgens mij voor dat hij blijft optellen
if($row = $result-> fetch_assoc()){
$sum = 0;
echo '<div class="cart-items">';
echo '<div class="cart-row">';
echo '<div class="cart-item cart-column">';
echo '<span class="cart-item-title">'. $row['broodnaam'] . '</span>';
echo '</div>';
echo '<span class="cart-price cart-column"> €'. $row['prijs'] . '</span>';
echo '</div>';
echo '</div>';
$sum = $row['prijs'];
break;
}
}
?>
<div class="cart-total">
<strong class="cart-total-title">Total</strong>
<span class="cart-total-price"> € <?php echo $sum;?></span>
</div>
<?php
}else{
echo 'mandje is leeg.';
?>
<div class="cart-total">
<strong class="cart-total-title">Total</strong>
<span class="cart-total-price"> € 0</span>
</div>
<?php
}
?>
<div class="text-center">
<button class="btn btn-outline-primary" type="button"><a href="bestellen.php">PURCHASE</a></button>
</div>
</section>
</body>
这是商店页面的代码
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errrors', '1');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>Shop Homepage - Start Bootstrap Template</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Bootstrap icons-->
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
<link href="css/stylecart.css" rel="stylesheet" />
<script src="js/scripts.js" async></script>
</head>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 20px;
}
#myBtn {
display: none;
position: fixed;
bottom: 20px;
right: 30px;
z-index: 99;
font-size: 18px;
border: none;
outline: none;
background-color: black;
color: white;
cursor: pointer;
padding: 25px;
border-radius: 50px;
}
#myBtn:hover {
background-color: #555;
}
</style>
<body>
<!-- Navigation-->
<?php include "navbar.php"?>
<?php if(isset($_SESSION['USER_ID'])){ ?>
<!-- Header-->
<header class="bg-dark py-5">
<div class="container px-4 px-lg-5 my-5">
<div class="text-center text-white"> <!--Het werkt -->
<h1 class="display-4 fw-bolder">Goedemorgen, <?php echo $_SESSION['USERNAME'];?></h1>
<p class="lead fw-normal text-white-50 mb-0">Shop in style</p>
</div>
</div>
</header>
<?php
} else {
?>
<!-- Header-->
<header class="bg-dark py-5">
<div class="container px-4 px-lg-5 my-5">
<div class="text-center text-white"> <!--het werkt-->
<h1 class="display-4 fw-bolder">Goedemorgen, Gast</h1>
<p class="lead fw-normal text-white-50 mb-0">Shop in style</p>
</div>
</div>
</header>
<?php } ?>
<!--miscchien dit toch in een whileloop gooien dat zal ook de code korter maken-->
<!-- Section-->
<button onclick="topFunction()" id="myBtn" title="Go to top">↑</button>
<?php
include "config.php";
$sql = 'SELECT * FROM broodjes';
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->get_result(); // get the mysqli result
while($row = $result-> fetch_assoc()){
// $_SESSION['basket'] = array();
//echo $row['broodnaam'];
echo ' <section class="py-5">
<div class="container px-4 px-lg-5 mt-5">
<div class="row gx-4 gx-lg-5 row-cols-2 row-cols-md-3 row-cols-xl-4 justify-content-center">
<div class="col mb-5">
<div class="card h-100">
<!-- Product image dit kan later nog wel-->
<div class="fw-image">
<img class="card-img-top" src="https://dummyimage.com/450x300/dee2e6/6c757d.jpg" alt="..." />
</div>
<!-- Product details-->
<div class="card-body p-4">
<div class="text-center">
<div class="test1">
<input type="hidden" name="broodjes_ID" value=', $row['broodjes_ID'] , '/>
</div>
<!-- Product name-->
<div class="test3">
<input type="hidden" name="broodnaam" value=', $row['broodnaam'] , '/>
<h5 class="fw-bolder">'.$row['broodnaam']. '</h5>
</div>
<!-- Product price-->
<div class="test2">
<input type="hidden" name="broodnaam" value=', $row['prijs'] , '/>
<h3> Prijs: </h3> <h3 class="fw-price"> €'.$row['prijs']. '</h3><br>
</div>
<!--voorraad-->
'; if($row['voorraad'] == 0){
echo '
<h3 class="fw-voorraad" style="color: red;"> uitverkocht</h3><br>
'; }else{
echo '
Voorraad: '.$row['voorraad'].'<br>
</div>
</div>
<!-- Product actions-->
<form action="cart.php?broodjes_ID='. $row['broodjes_ID'].'" method="post" name="broodjes" value"<?php echo htmlentities(serialize($_SESSION["basket"])); ?>
<div class="card-footer p-4 pt-0 border-top-0 bg-transparent">
<div class="text-center"><button class="btn btn-outline-dark mt-auto shop-item-button" type="submit" name="add_to_cart">Add to cart</button></div>
</div>
</form>
'; }
echo '</div>
</div>
</div>
</div>
</section>';
if (isset($_POST['add_to_cart'])) {
$_SESSION['basket'] = array();
//$_SESSION['basket'][] = $row['broodjes_ID'];
$_SESSION['basket'] = array_push($_SESSION['basket'], $row['broodjes_ID']);
}
}
?>
<!-- Footer-->
<?php include "footer.php";?>
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<script src="js/scrolltotop.js"></script>
</body>
</html>
【问题讨论】: