php - PHP 会话问题。添加项目时,它会将 1 添加到所有项目
问题描述
我正在制作一个购物车,当您单击两辆汽车中的任何一辆时,您将该商品添加到购物车中。问题是当我点击宝马图片时,宝马和丰田的计数都会增加。我已经为此苦苦挣扎了2天多,但我无法弄清楚!
这是我的第一页。当我点击任何一张图片时,我希望它把它添加到购物车中。我想使用会话来解决这个问题。
<?php session_start(); ?>
<?php include('navbar.php');?>
<h1>OstosKoriTori</h1>
<h3>Click the picture to add the car to your shopping cart!</h3>
<p>Toyota Chaser JZX 100</p>
<p>BMW E92</p>
<div class="autot">
<a href="add-basket.php?id=chaser"><img src="chaser.jpg" alt="Chaseri"></a>
<a href="add-basket.php?id=bmw"><img src="bmw.jpg" alt="Bemari"></a>
<br>
</div>
这是第二页,当您选择图片时运行此代码。我相信问题就在这里。
<?php session_start(); ?>
<?php
if(!isset($_SESSION['chaser'])){
$_SESSION['chaser'] = 0;
}
if(isset($_SESSION['chaser'])){
$_SESSION['chaser'] += 1;
}
if(!isset($_SESSION['bmw'])){
$_SESSION['bmw'] = 0;
}
if(isset($_SESSION['bmw'])){
$_SESSION['bmw'] += 1;
}
?>
<?php
header("Location: http://" . $_SERVER['HTTP_HOST']
. dirname($_SERVER['PHP_SELF']) . '/'
. "basket-session.php");
?>
这是最后一页,您可以根据点击图片的次数查看您拥有的汽车数量。
<?php session_start(); ?>
<?php include('navbar.php')?>
<h1>OstosKoriTori</h1>
<h3>Ostoskorin sisältö</h3>
<p>Toyota Chaser JZX 100</p>
<p>BMW E92</p>
<div class="kuvat">
<img src="chaser.jpg" alt="Chaseri">
<img src="bmw.jpg" alt="Bemari">
</div>
<div class="kpl">
<p><?php echo "Korissa on: <strong>" . $_SESSION['chaser'] . "</strong> kpl"; ?></p>
<p><?php echo "Korissa on: <strong>" . $_SESSION['bmw'] . "</strong> kpl"; ?></p>
</div>
<div class="clearBasket">
<a href="clear-basket.php">Tyhjennä ostoskori</a>
</div>
解决方案
根据您发布的代码,这样的事情应该可以工作。我添加了一些注释来解释代码。
<?php
session_start();
// Initialise session to existing value or zero
$_SESSION['chaser'] = $_SESSION['chaser'] ?? 0;
$_SESSION['bmw'] = $_SESSION['bmw'] ?? 0;
// Determine selected car
$car = $_GET['id'] ?? null;
// Increment selected car
if ($car) {
$_SESSION[$car] += 1;
}
header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/basket-session.php');
推荐阅读
- jquery - 使用数据属性调用函数
- sql - Oracle,按 rownum 连接
- css - 绕过网页上的清除类型
- reactjs - 将 Dispatch 传递给设置 ReactTable 列的非组件?
- ios - 联系人访问权限显示在模拟器中,但不显示在真实设备上,有时很快
- swift - 如何要求信号量立即返回而不是等待信号?
- git - GitHub 究竟是如何压缩和合并的?
- python - 无法在 bash 之外运行 conda?
- javascript - 我如何将动画“向下滚动”指示器居中在图像上但在草地和地板之间
- java - Spring Boot:如何禁用 JNDI 查找并使用 spring.datasource 代替测试?