购物车 $_SESSION 问题

2024-02-02

我正在开发一个基本的购物车。但是,$_SESSION 变量似乎未正确存储或访问。例如,如果您前往它将显示项目名称。但是在没有任何 $_GET 变量的情况下刷新 cart.php 时,它不会返回任何内容。我究竟做错了什么?

<?php
include "tickets/config.php";

if (isset ($_GET['action']) && isset($_GET['item'])) {
    $cart = new Cart($_GET['item']);
    if ($_GET['action'] == "addItem") {
        $cart->addItem();
        $cart->get_items_code();
        $cart->populate();
    }
    if($_GET['action'] == "removeItem") {
        $cart->removeItem();
        $cart->get_items_code();
        $cart->populate();
    }
    $cart->postAllItems();
}
else {
    $cart = new Cart(null);
    $cart->get_items_code();
    $cart->populate();
    $cart->postAllItems();
}

class Cart {
    protected $all_items = array();
    protected $request_item;
    protected $content;
    protected $item_obj;

    public function __construct($request_item) {
        $this->request_item = $request_item;
        if ($this->request_item) 
            $this->item_obj = new Item($this->request_item);
        $this->all_items = $this->getAllItems();
    }

    public function getAllItems() {
        if ($_SESSION['cart'])
            $request = $_SESSION['cart'];
        else
            $request = array();
        return $request;
    }

    public function postAllItems() {
        $_SESSION['cart'] = $this->all_items;
    }

    public function addItem () {
        array_push($this->all_items, $this->item_obj);
    }

    public function removeItem() {
        unset($this->all_items[$this->item_obj->get_item()]);
    }

    public function get_items_code() {

        //for($i = 0; $this->all_items[$i]; $i++) {
        foreach($this->all_items as $item) {
            $name = $item->get_name();
            $this->content .= <<<HTML
<div class="item">
$name
</div>      
HTML;
        }
    }

    public function populate() {
        echo <<<HTML
<div id="list">     
$this->content
<div>
HTML;
    }
}


class Item {
    protected $id;
    protected $name;
    protected $price;
    protected $desc;
    protected $colors;
    protected $sizes;
    protected $pic_url;
    protected $all_info;

    public function __construct($id) {
        $this->id = $id;
        $this->get_item_info();
    }

    public function get_item() {
        return ($this);
    }

    public function get_name() {
        return $this->name;
    }

    protected function get_item_info() {
        $sql = "SELECT * FROM catalog WHERE id = ".$this->id;
        $this->all_info = mysql_query($sql);
        $this->all_info = mysql_fetch_array($this->all_info);
        $this->name = $this->all_info['name'];
        $this->price = $this->all_info['price'];
        $this->desc = $this->all_info['description'];
        $this->colors = $this->all_info['colors'];
        $this->sizes = $this->all_info['sizes'];
        $this->pic_url = $this->all_info['picture'];
    }

}




?>

您需要使用以下命令初始化会话session_start()-功能 http://php.net/session_start在页面顶部(在修改或读取会话内容之前)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

购物车 $_SESSION 问题 的相关文章

  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 正则表达式上的换行符

    我试图替换两个标签之间的所有内容 但我无法构建正确的表达式 这就是我所做的
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 简单的 PHP 回显代码不起作用

    这是我的 html 和 php 脚本 h1 Bob s Auto Parts h1 table width 100 tr tr table 为什么这个输出会出现一个 gt 我希望它是 这有效 仅有的 这是输出 鲍勃的汽车零件 鲍勃
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 如何隐藏 URL 中的锚标记

    如何隐藏地址栏中以下链接 href 的哈希值 a href index php dev name 所以它会将我重定向到index php dev name 但我希望地址栏只显示index php 您可以使用 Javascript oncli
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • Mysqli 更新抛出 Call to a member function bind_param() 错误[重复]

    这个问题在这里已经有答案了 我有一个 70 80 字段表单 需要插入到表中 因此我首先根据表单中的输入名称在数据库中创建了一个表 而不是手动创建一个巨大的插入语句 这是我使用的代码创建 更改表 function createTable ar
  • PHP print_r() 中 _r 的含义是什么?

    我见过这个答案 https stackoverflow com questions 13103410 what does r suffix mean就这样 但我不确定它对于 PHP 是否相同 如果是 可重入的含义是什么 From PHP n
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get

随机推荐

  • 在matlab中设置修改时间

    我可以通过以下方式在 matlab 中获取修改时间 gt gt f dir my filename dat gt gt f date 但我怎样才能改变它呢 这可以使用 Java Matlab 来完成 import java io File
  • 使用异质等式 =

    到目前为止我所拥有的是 module Foo postulate P P postulate NP NP complexityProof P NP complexityProof complexityProof rhs 但在尝试加载文件时
  • 在 Spark 中加载 Word2Vec 模型

    是否可以加载预训练 二进制 模型来 Spark 使用 scala 我尝试加载由谷歌生成的二进制模型之一 如下所示 import org apache spark mllib feature Word2Vec Word2VecModel va
  • 不兼容的单位:'rem' 和 'px' 与 bootstrap 4 alpha 6

    我正在尝试实现 bootstrap 4 模板 我使用 bootstrap 4 alpha 6 并看到这样的错误 Incompatible units rem and px in line input height font size bas
  • 尝试从 componentWillMount 中异步调用的返回值设置状态时,未定义文档

    我在组件的 componentWillMount 调用中获取数据 实际上它在 mixin 中 但想法相同 ajax 调用返回后 我尝试 setState 但收到文档未定义的错误 我不知道如何解决这个问题 有什么需要等待的吗 我应该在其中执行
  • 将空值传递给重载方法,其中对象和字符串作为 C# 中的参数

    我有两个重载方法 如下所示 public class TestClass public void LoadTest object param Console WriteLine Loading object public void Load
  • C++ 模板类错误,运算符 ==

    Error 错误 C2678 二进制 找不到采用 const Entry 类型的左侧操作数的运算符 或者没有可接受的转换 功能 template
  • 何时使用 TaskEx.Run 与 TaskEx.RunEx

    I m trying to understand when to use TaskEx Run I have provided two code sample i wrote below that produce the same resu
  • 为什么 BigTable 有列族?

    为什么 BigTable 的结构是 family qualifier 的两级层次结构 具体来说 为什么要强制执行此操作 而不是仅仅拥有列 并建议用户将其限定符命名为 vertical column 我感兴趣的是强制执行此操作是否可以实现某些
  • 有没有办法在 Visual Studio 2019 中发布 .NET 标准库而不生成 .nupkg?

    我的理解是 当您发布 NET 标准库时 预期的行为是生成一个 nupkg 我有内部 Net 标准库 我维护这些库以供内部项目使用 典型的工作流程是发布库 然后将发布的文件复制到使用项目 这不是我应该做的事情吗 我对发布 NET 标准库时缺乏
  • MySQL的设置操作

    MySQL可以使用Set操作吗intersect and except 如果可以请举个例子 如果不能的话 该怎么操作呢 在mysql中可以使用intersect 但是你必须稍微不同地编写它 这是一个例子 和here http www bit
  • 尝试从 Bitbucket 迁移到 Github,出现文件大小错误

    我正在尝试从 bitbucket 迁移到 github 我所做的就是从远程删除 bitbucket 并添加我的 github 帐户 然后我尝试git push u origin master但我有一个large file detected错
  • MooTools 中的 .getScript() 等效项?

    我想知道是否有一个与 jQuery 等效的 MooTools getScript 我非常确定 MooTools 中存在该文件 但我还没有找到它 我对 MooTools 不太熟悉 但看起来你可以使用Asset javascript http
  • 将 float64 数组转换为 float32 数组

    我有一个 float64 数组 想要将每个值转换为 float32 我试过了 What I have features64 120 float64 What I ve tried features32 120 float32 feature
  • 如何从命令行构建android apk?

    如何从命令行构建 APK 文件 我试过了 MSBuild myProject dproj p Config Release p Platform Android 但不会生成 APK 文件 只生成 so 文件 一些实验表明 建议的各种行动方案
  • 在 TypeScript 中使用符号作为对象键类型

    我正在尝试用 a 定义一个对象symbol https developer mozilla org en US docs Web JavaScript Reference Global Objects Symbol作为 key type 因
  • #ifdef DEBUG 与 #if DEBUG

    当使用编译器指令时 我不清楚以下两个代码片段中哪一个是正确 首选以及原因 似乎我见过的大多数开发人员和开源项目都使用第一个 但我也看到第二个也经常使用 ifdef DEBUG self doSomethingOnlyWhenDebuggin
  • 为什么应该使用基于文档的数据库而不是关系数据库?

    为什么我应该使用基于文档的数据库 如 CouchDB 而不是使用关系数据库 是否存在基于文档的数据库比关系数据库更适合的典型应用程序或领域 也许你不应该 第二个最明显的答案是 如果您的数据不相关 则应该使用它 这通常表现为没有简单的方法将数
  • Vertx JDBC 客户端 queryWithParams - 如何添加列表?

    我有带条件的 SQL 查询currency in 我正在使用 vertx JDBC 客户端queryWithparams方法 它接收 JsonArray 中的查询参数 我怎样才能传递我的可能列表currency查询的值 我试过new Jso
  • 购物车 $_SESSION 问题

    我正在开发一个基本的购物车 但是 SESSION 变量似乎未正确存储或访问 例如 如果您前往它将显示项目名称 但是在没有任何 GET 变量的情况下刷新 cart php 时 它不会返回任何内容 我究竟做错了什么