我正在关注一个php购物车指南,我要介绍一个部分,当我将产品添加到购物车时,每次点击添加到购物车链接时产品会增加,但是我没有,它仅显示1并且不再增加。当我回到产品(index.php)页面时,购物车不能保存这些数据,指南说它应该但我的不应该。每次按下添加到购物车链接时,如何增加它?谁能看到我错过或做错的事情?
的index.php:
<?php
require("connect.php");
$sql="SELECT * FROM elec_guit ORDER BY name ASC";
$query=mysql_query($sql);
while ($row=mysql_fetch_array($query)) {
?>
<div class="price1">
<p>
$<?php echo $row['price'] ?>
<br>
<br>
<!-- This is correct now -->
<a href="cart.php?add=<?php echo $row['id_product'] ?>">Add to cart</a>
</p>
</div>
<?php
}
&GT;
这是cart.php:
<?php
session_start();
$page = 'cart.php';
include ('connect.php');
if (isset($_GET['add'])) {
$_SESSION['cart_'.$_GET['add']]=+'1';
}
echo $_SESSION ['cart_1'];
?>
更新
好的所以它现在全部排序了,我在另一个灯堆上尝试了它并且它正常工作,我的某个地方运行不正常,感谢所有帮助尝试解决这个问题
答案 0 :(得分:0)
stored_image
答案 1 :(得分:0)
通常,session_start()
将启动尚未启动的会话或允许您访问现有会话。当您离开购物车页面并返回索引页面(没有session_start()
)时,您将无法看到会话变量。
您创建的脚本会创建$_SESSION
数组的'cart_X'元素,其中X是$_GET['add']
中的任何内容,对应于产品ID。考虑将购物车与其中包含的对象分开,如下所示:
session_start();
$product_id = $_GET['add'];
if (isset($_SESSION['cart'][$product_id]){
$_SESSION['cart'][$product_id]++;
} else {
$_SESSION['cart'][$product_id] = 1;
}
请注意,上面没有检查伪输入(总是一个好主意验证输入服务器端和客户端)。除此之外,mysql_*
函数已弃用,如果可能,请移至mysqli_*
。
而不是echo $_SESSION['cart_1']
在print_r($_SESSION['cart'])
代码之间尝试<pre>
以查看购物车中的内容,并在您需要访问变量时将session_start()
放入索引页面那里。
答案 2 :(得分:0)
+&#39; 1&#39;将演员&#39; 1&#39;积极的int(1):p
看看这给你什么,
var_dump(+1,-1,+'1',-1,-'1');
从而
$_SESSION['cart_'.$_GET['add']]=+'1';
与
相同$_SESSION['cart_'.$_GET['add']]=(int)'1';
你基本上在做
$_SESSION['cart_'.$_GET['add']]=1;
$_SESSION['cart_'.$_GET['add']]=1;
$_SESSION['cart_'.$_GET['add']]=1;
当你想要的是什么
$_SESSION['cart_'.$_GET['add']]+=1;
$_SESSION['cart_'.$_GET['add']]+=1;
$_SESSION['cart_'.$_GET['add']]+=1;
还有你的代码的其他问题,即error_reporting(E_ALL);会告诉你 - $ SESSION [&#39;购物车&#39;。$ _ GET [&#39; add&#39;]]从未初始化,我知道,添加到未初始化的变量 WORKS < / em>在php中因为php是愚蠢的,但你不应该这样做,你会得到一个E_NOTICE错误。 你可以像这样正确地初始化它
if(!isset($_SESSION['cart_'.$_GET['add']])){//variable not initialized, initialize it.
$_SESSION['cart_'.$_GET['add']]=1;
} else {
$_SESSION['cart_'.$_GET['add']]+=1;
}
和mysql_函数自5.5.0以来已被弃用,你应该将代码移植到PDO或mysqli,你会在这里找到一个很好的指南http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers