目录
购物车产生代码
首页 php教程 php手册 购物车产生代码

购物车产生代码

Jun 13, 2016 am 09:58 AM
代码 分析 简单 网友 要求 购物车 进行

购物车产生代码

/*
应一网友的要求,将其发的一段购物车类代码进行简单的分析,希望对需要的新手们有所帮助~
本人也是新手,分析讲解的同时也相当于学习了,不对的地方大虾们赶紧指正哈,呵呵^^
代码讲解分析: Linvo. 2008-2-15
*/

//购物车session的产生代码
if(!$session && !$scid) {
/*
session用来区别每一个购物车,相当于每个车的身份证号;
scid只用来标识一个购物车id号,可以看做是每个车的名字;
当该购物车的id和session值两者都不存在时,就产生一个新购物车
*/
    $session = md5(uniqid(rand()));
    /*
    产生一个唯一的购物车session号
    rand()先产生个随机数,uniqid()再在该随机数的基础上产生一个独一无二的字符串,最后对该字符串进行md5
    */
    SetCookie(scid, $session, time() 14400);
    /*
    设置该购物车cookie
    变量名:scid(不知到这里是不是少了一个$号呢?)
    变量值:$session
    有效时间:当前时间 14400秒(4小时内)
    关于setcookie函数的详细用法,大家还是参看php手册吧~
    */
}


class Cart { //开始购物车类
    function check_item($table, $session, $product) {
    /*
    查验物品(表名,session,物品)
    */

        $query = SELECT * FROM $table WHERE session='$session' AND product='$product' ;
        /*
        看一看'表'里该'购物车'中有没有该'产品'
        即,该产品有没有已经放入购物车
        */

        $result = mysql_query($query);
        if(!$result) {
            return 0;
        }
        /*
        查询失败
        */

        $numRows = mysql_num_rows($result);
        if($numRows == 0) {
            return 0;
        /*
        若没有找到,则返回0
        */
        } else {
            $row = mysql_fetch_object($result);
            return $row->quantity;
            /*
            若找到,则返回该物品数量
            这里有必要解释一下mysql_fetch_object函数(下面还会用到):
            【mysql_fetch_object() 和 mysql_fetch_array() 类似,只有一点区别 - 返回一个对象而不是数组。】
            上面这句话摘自php手册,说得应该很明白了吧~
            简单的说就是,取一条记录中的某个字段,应该用“->”而不是像数组一样用下标
            */
        }
    }

    function add_item($table, $session, $product, $quantity) {
    /*
    添加新物品(表名,session,物品,数量)
    */
        $qty = $this->check_item($table, $session, $product);
        /*
        调用上面那个函数,先检查该类物品有没有已经放入车中
        */

        if($qty == 0) {
            $query = INSERT INTO $table (session, product, quantity) VALUES ;
            $query .= ('$session', '$product', '$quantity') ;
            mysql_query($query);
            /*若车中没有,则像车中添加该物品*/
        } else {
            $quantity = $qty; //若有,则在原有基础上增加数量
            $query = UPDATE $table SET quantity='$quantity' WHERE session='$session' AND ;
            $query .= product='$product' ;
            mysql_query($query);
            /*
            并修改数据库
            */
        }
    }

    function delete_item($table, $session, $product) {
    /*
    删除物品(表名,session,物品)
    */
        $query = DELETE FROM $table WHERE session='$session' AND product='$product' ;
        mysql_query($query);
        /*
        删除该购物车中该类物品
        */
    }

    function modify_quantity($table, $session, $product, $quantity) {
    /*
    修改物品数量(表名,session,物品,数量)
    */
        $query = UPDATE $table SET quantity='$quantity' WHERE session='$session' ;
        $query .= AND product='$product' ;
        mysql_query($query);
        /*
        将该物品数量修改为参数中的值
        */
    }

    function clear_cart($table, $session) {
    /*
    清空购物车(没什么好说)
    */
        $query = DELETE FROM $table WHERE session='$session' ;
        mysql_query($query);
    }

    function cart_total($table, $session) {
    /*
    车中物品总价
    */
        $query = SELECT * FROM $table WHERE session='$session' ;
        $result = mysql_query($query);
        /*
        先把车中所有物品取出
        */

        if(mysql_num_rows($result) > 0) {
            while($row = mysql_fetch_object($result)) {
            /*
            如果物品数量>0个,则逐个判断价格并计算
            */
           
                $query = SELECT price FROM inventory WHERE product='$row->product' ;
                $invResult = mysql_query($query);
                /*
                从inventory(库存)表中查找该物品的价格
                */

                $row_price = mysql_fetch_object($invResult);
                $total = ($row_price->price * $row->quantity);
                /*
                总价 = 该物品价格 * 该物品数量
                ( 大家应该能看明白吧:) )
                */
            }

        }
        return $total; //返回总价钱
    }


    function display_contents($table, $session) {
    /*
    获取关于车中所有物品的详细信息
    */
        $count = 0;
        /*
        物品数量计数
        注意,该变量不仅仅为了对物品数量进行统计,更重要的是,它将作为返回值数组中的下标,用来区别每一个物品!
        */

        $query = SELECT * FROM $table WHERE session='$session' ORDER BY id ;
        $result = mysql_query($query);
        /*
        先取出车中所有物品
        */

        while($row = mysql_fetch_object($result)) {
        /*
        分别对每一个物品进行取详细信息
        */

            $query = SELECT * FROM inventory WHERE product='$row->product' ;
            $result_inv = mysql_query($query);
            /*
            从inventory(库存)表中查找该物品的相关信息
            */

            $row_inventory = mysql_fetch_object($result_inv);
            $contents[product][$count] = $row_inventory->product;
            $contents[price][$count] = $row_inventory->price;
            $contents[quantity][$count] = $row->quantity;
            $contents[total][$count] = ($row_inventory->price * $row->quantity);
            $contents[description][$count] = $row_inventory->description;
            /*
            把所有关于该物品的详细信息放入$contents数组
            $contents是一个二维数组
            第一组下标是区别每个物品各个不同的信息(如物品名,价钱,数量等等)
            第二组下标是区别不同的物品(这就是前面定义的$count变量的作用)
            */
            $count ; //物品数量加一(即下一个物品)
        }
        $total = $this->cart_total($table, $session);
        $contents[final] = $total;
        /*
        同时调用上面那个cart_total函数,计算下总价钱
        并放入$contents数组中
        */

        return $contents;
        /*
        将该数组返回
        */
    }


    function num_items($table, $session) {
    /*
    返回物品种类总数(也就是说,两个相同的东西算一种    好像是废话- -!)
    */
        $query = SELECT * FROM $table WHERE session='$session' ;
        $result = mysql_query($query);
        $num_rows = mysql_num_rows($result);
        return $num_rows;
        /*
        取出车中所有物品,获取该操作影响的数据库行数,即物品总数(没什么好说的)
        */
    }

    function quant_items($table, $session) {
    /*
    返回所有物品总数(也就是说,两个相同的东西也算两个物品   - -#)
    */
        $quant = 0;// 物品总量
        $query = SELECT * FROM $table WHERE session='$session' ;
        $result = mysql_query($query);
        while($row = mysql_fetch_object($result)) {
        /*
        把每种物品逐个取出
        */
            $quant = $row->quantity; //该物品数量加到总量里去
        }
        return $quant; //返回总量
    }

}

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

最简便的硬盘序列号查询方式 最简便的硬盘序列号查询方式 Feb 26, 2024 pm 02:24 PM

硬盘序列号是硬盘的一个重要标识,通常用于唯一标识硬盘以及进行硬件识别。在某些情况下,我们可能需要查询硬盘序列号,比如在安装操作系统、查找正确设备驱动程序或进行硬盘维修等情况下。本文将介绍一些简单的方法,帮助大家查询硬盘序列号。方法一:使用Windows命令提示符打开命令提示符。在Windows系统中,按下Win+R键,输入"cmd"并按下回车键即可打开命

蓝屏代码0x0000001怎么办 蓝屏代码0x0000001怎么办 Feb 23, 2024 am 08:09 AM

蓝屏代码0x0000001怎么办蓝屏错误是电脑系统或硬件出现问题时的一种警告机制,代码0x0000001通常表示出现了硬件或驱动程序故障。当用户在使用电脑时突然遇到蓝屏错误,可能会感到惊慌和无措。幸运的是,大多数蓝屏错误都可以通过一些简单的步骤进行排除和处理。本文将为读者介绍一些解决蓝屏错误代码0x0000001的方法。首先,当遇到蓝屏错误时,我们可以尝试重

GE通用远程代码可在任何设备上编程 GE通用远程代码可在任何设备上编程 Mar 02, 2024 pm 01:58 PM

如果您需要远程编程任何设备,这篇文章会给您带来帮助。我们将分享编程任何设备的顶级GE通用远程代码。通用电气的遥控器是什么?GEUniversalRemote是一款遥控器,可用于控制多个设备,如智能电视、LG、Vizio、索尼、蓝光、DVD、DVR、Roku、AppleTV、流媒体播放器等。GEUniversal遥控器有各种型号,具有不同的功能和功能。GEUniversalRemote最多可以控制四台设备。顶级通用遥控器代码,可在任何设备上编程GE遥控器配备一组代码,使其能够与不同设备相配合。您可

实战教程:PHP和MySQL实现购物车功能详解 实战教程:PHP和MySQL实现购物车功能详解 Mar 15, 2024 pm 12:27 PM

实战教程:PHP和MySQL实现购物车功能详解购物车功能是网站开发中常见的功能之一,通过购物车用户可以方便地将想要购买的商品加入购物车,然后进行结算和支付。在这篇文章中,我们将详细介绍如何使用PHP和MySQL实现一个简单的购物车功能,并提供具体的代码示例。创建数据库和数据表首先需要在MySQL数据库中创建一个用来存储商品信息的数据表。以下是一个简单的数据表

如何使用Copilot生成代码 如何使用Copilot生成代码 Mar 23, 2024 am 10:41 AM

作为一名程序员,对于能够简化编码体验的工具,我感到非常兴奋。借助人工智能工具的帮助,我们可以生成演示代码,并根据需求进行必要的修改。在VisualStudioCode中新引入的Copilot工具让我们能够创建具有自然语言聊天交互的AI生成代码。通过解释功能,我们可以更好地理解现有代码的含义。如何使用Copilot生成代码?要开始,我们首先需要获得最新的PowerPlatformTools扩展。要实现这一点,你需要进入扩展页面,搜索“PowerPlatformTool”,然后点击Install按钮

创建和运行Linux'.a”文件 创建和运行Linux'.a”文件 Mar 20, 2024 pm 04:46 PM

在Linux操作系统中处理文件需要使用各种命令和技术,使开发人员能够高效地创建和执行文件、代码、程序、脚本和其他东西。在Linux环境中,扩展名为”.a”的文件作为静态库具有重要的重要性。这些库在软件开发中发挥着重要作用,允许开发人员有效地管理和共享多个程序的公共功能。对于Linux环境中的有效软件开发,了解如何创建和运行“.a”文件至关重要。本文将介绍如何全面安装和配置Linux“.a”文件,让我们一起探索Linux“.a”文件的定义、用途、结构,以及创建和执行它的方法。什么是L

清华大学与智谱AI重磅开源 GLM-4:掀起自然语言处理新革命 清华大学与智谱AI重磅开源 GLM-4:掀起自然语言处理新革命 Jun 12, 2024 pm 08:38 PM

自2023年3月14日开始,ChatGLM-6B以来,GLM系列模型受到了广泛的关注和认可。特别是在ChatGLM3-6B开源之后,开发者对智谱AI推出的第四代模型充满了期待。而这一期待,随着GLM-4-9B的发布,终于得到了充分的满足。GLM-4-9B的诞生为了赋予小模型(10B及以下)更加强大的能力,GLM技术团队经过近半年的探索,推出了这一全新的第四代GLM系列开源模型:GLM-4-9B。这一模型在保证精度的同时,大幅度压缩了模型大小,具有更快的推理速度和更高的效率。GLM技术团队的探索没

一句话打造Agent!李彦宏:人人都是开发者的时代到来 一句话打造Agent!李彦宏:人人都是开发者的时代到来 Apr 17, 2024 pm 02:28 PM

大模型颠覆一切,终于还是颠到了本小编头上。还是一个一句话就被打造出来的Agent。像这样,抛给Ta一篇文章,不到1秒,标题建议就新鲜出炉了。这效率,比起本人类,只能说是一个快如闪电一个慢如树懒吧…更难顶的是,创造这个Agent,真的就是几分钟的事。Prompt是酱婶的:并且,如果你也想体验这种颠覆一切的feel,现在,基于这个百度刚刚上新的文心智能体平台,人人都能免费打造属于自己的智能助手。可以利用搜索引擎、智能硬件平台、语音识别、地图、汽车等百度移动生态渠道,让更多人使用上你的创意!李彦宏本人

See all articles