目錄
购物车产生代码
首頁 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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
最簡單的硬碟序號查詢方式 最簡單的硬碟序號查詢方式 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遙控器配備一組代碼,使其能夠與不同設備配合。您可

如何使用Copilot產生程式碼 如何使用Copilot產生程式碼 Mar 23, 2024 am 10:41 AM

身為一名程式設計師,對於能夠簡化程式設計體驗的工具,我感到非常興奮。借助人工智慧工具的幫助,我們可以產生演示程式碼,並根據需求進行必要的修改。在VisualStudioCode中新引入的Copilot工具讓我們能夠創建具有自然語言聊天互動的AI生成程式碼。透過解釋功能,我們可以更好地理解現有程式碼的含義。如何使用Copilot產生程式碼?要開始,我們首先需要取得最新的PowerPlatformTools擴充。要實現這一點,你需要進入擴充頁面,搜尋“PowerPlatformTool”,然後點擊Install按鈕

實戰教學:PHP與MySQL實作購物車功能詳解 實戰教學:PHP與MySQL實作購物車功能詳解 Mar 15, 2024 pm 12:27 PM

實戰教學:PHP和MySQL實現購物車功能詳解購物車功能是網站開發中常見的功能之一,透過購物車使用者可以輕鬆地將想要購買的商品加入購物車,然後進行結算和付款。在這篇文章中,我們將詳細介紹如何使用PHP和MySQL實作一個簡單的購物車功能,並提供具體的程式碼範例。建立資料庫和資料表首先需要在MySQL資料庫中建立一個用來儲存商品資訊的資料表。以下是一個簡單的數據表

清華大學與智譜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技術團隊的探索沒

建立並執行Linux'.a”文件 建立並執行Linux'.a”文件 Mar 20, 2024 pm 04:46 PM

在Linux作業系統中處理檔案需要使用各種命令和技術,使開發人員能夠有效率地建立和執行檔案、程式碼、程式、腳本和其他東西。在Linux環境中,擴展名為”.a”的檔案作為靜態庫具有重要的重要性。這些程式庫在軟體開發中發揮重要作用,允許開發人員有效地管理和共享多個程式的公共功能。對於Linux環境中的有效軟體開發,了解如何建立和運行「.a」檔案至關重要。本文將介紹如何全面安裝和設定Linux「.a」文件,讓我們一起探索Linux「.a」文件的定義、用途、結構,以及建立和執行它的方法。什麼是L

織夢CMS二級目錄打不開的原因分析 織夢CMS二級目錄打不開的原因分析 Mar 13, 2024 pm 06:24 PM

標題:解析織夢CMS二級目錄打不開的原因及解決方案織夢CMS(DedeCMS)是一款功能強大的開源內容管理系統,被廣泛應用於各類網站建設中。然而,有時在搭建網站過程中可能會遇到二級目錄無法開啟的情況,這給網站的正常運作帶來了困擾。在本文中,我們將分析二級目錄打不開的可能原因,並提供具體的程式碼範例來解決這個問題。一、可能的原因分析:偽靜態規則配置問題:在使用

See all articles