【问题标题】:Adding items to shopping basket using sessions使用会话将项目添加到购物篮
【发布时间】:2014-05-17 12:08:25
【问题描述】:

这是一个购物篮,用户可以单击添加到购物篮,传递一个 action=add 变量,这是从 switch 语句中选择的。但是,第一次添加项目时会导致错误(底部)。这只是第一次发生,这让我相信这是因为 session[cart] 尚未创建。

变量设置在这里:

if(isset($_GET['id'])) 
{
$Item_ID = $_GET['id'];//the product id from the URL 
$action = $_GET['action'];//the action from the URL 
} 
else
{
$action = "nothing";
}




<?php

if(empty($_SESSION['User_loggedin']))
{ 
header ('Location: logon.php');
}
else
{

switch($action) { //decide what to do 

    case "add":
        $_SESSION['cart'][$Item_ID]++; //add one to the quantity of the product with id $product_id 
    break;

    case "remove":
        $_SESSION['cart'][$Item_ID]--; //remove one from the quantity of the product with id $product_id 
        if($_SESSION['cart'][$Item_ID] == 0) unset($_SESSION['cart'][$Item_ID]); //if the quantity is zero, remove it completely (using the 'unset' function) - otherwise is will show zero, then -1, -2 etc when the user keeps removing items. 
    break;

    case "empty":
        unset($_SESSION['cart']); //unset the whole cart, i.e. empty the cart. 
    break;

    case "nothing":
    break;
}

if(empty($_SESSION['cart']))
{ 
echo "You have no items in your shopping cart.";
}

添加项目工作正常,但是当我第一次向空篮子添加东西时,我收到以下错误:

Notice: Undefined index: cart in H:\STUDENT\S0190204\GGJ\Basket.php on line 57 Notice: Undefined index: 1 in H:\STUDENT\S0190204\GGJ\Basket.php on line 57

【问题讨论】:

  • 到目前为止的答案没有运气:/

标签: php


【解决方案1】:

这是因为您的 $_SESSION['cart'] 变量未针对第一个请求进行初始化。试试下面的东西。

if(empty($_SESSION['User_loggedin']))
{ 
header ('Location: logon.php');
}
else
{

   // Added this...
   if(empty($_SESSION['cart'])){
       $_SESSION['cart'] = array();
   }

switch($action) { //decide what to do 

    case "add":
        $_SESSION['cart'][$Item_ID]++; //add one to the quantity of the product with id $product_id 
    break;

    case "remove":
        $_SESSION['cart'][$Item_ID]--; //remove one from the quantity of the product with id $product_id 
        if($_SESSION['cart'][$Item_ID] == 0) unset($_SESSION['cart'][$Item_ID]); //if the quantity is zero, remove it completely (using the 'unset' function) - otherwise is will show zero, then -1, -2 etc when the user keeps removing items. 
    break;

    case "empty":
        unset($_SESSION['cart']); //unset the whole cart, i.e. empty the cart. 
    break;

    case "nothing":
    break;
}

if(empty($_SESSION['cart']))
{ 
echo "You have no items in your shopping cart.";
}

【讨论】:

    【解决方案2】:

    如果你认为你没有创建 $_SESSION['cart'] 变量,你可以简单地检查一下

    if (!isset($_SESSION['cart']))
    {
        //Initialize variable
    }
    

    此伪代码将检查变量是否未设置,然后执行一些后续代码
    (例如$_SESSION['cart'] = array();)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 2012-03-02
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多