为什么这不会增加?

时间:2016-02-23 22:47:41

标签: php mysql

我正在关注一个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'];


?>

更新

好的所以它现在全部排序了,我在另一个灯堆上尝试了它并且它正常工作,我的某个地方运行不正常,感谢所有帮助尝试解决这个问题

3 个答案:

答案 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