当前位置: 首页 > 图文教程 > 网络编程 > PHP > 提供一个最简单的购物车

PHP
PHP技巧教程:setcookie语句的问题
多个字段,大量记录的插入操作技巧(PHP)
动态网页PHP脚本中include文件报错解决方法
PHP中类的使用,面向对象的思路
php+javascript 静态化简单实例
Zend Framework留言本模型文件 (PHP源码)
PHP中使用ASP.NET AJAX
PHP正则表达式的快速学习方法
php中防盗链使用.htaccess
PHP在windows和LINUX下的路径分隔符
php页面zend加密乱码的解决办法
PHP中如何使用header发送头部信息
如何将PHP中的多维数组显示出来
用PHP操作MySql数据库(分页)
保护代码安全,PHP如何进行注入
在PHP中使用全局变量【一】
在PHP中使用全局变量【二】
获取远程图片并把它保存到本地
源代码的加亮(highlight_file)
用PHP上传文件和发送邮件

PHP 中的 提供一个最简单的购物车


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 89 ::
收藏到网摘: n/a

1、session_start()为什么不写在类里面?
答: 如果在类中session_start();那么当程序中再次出现session_start()时会出错
2、不要再每次增加商品和修改数量的时候计算金额,只存数量和单价就可以了,需要金额的时候再计算比较好点
答:好在这只是数组操作,应该对效率影响不大,所以我还是参照现在网上商店的作法,给出计算结果
3、为什么把价格取整?
答:这的确是一个重大失误,价格不能intval而应floatval.

以下把修改后的文件再发一次.
cart.class.php

已经修改后的PHP代码:------------------------------------------------------------------

<?php
/**
*  类名: cart
*  描述: 尝试以最简单的方式实现购物车
*  其他: 2004-8-19
*/
class cart
{
    /**
    *   函数名称:   addItem
    *   函数功能:   添加商品
    *   输入参数:   $data ------------- 商品数组
    *   函数返回值: none
    *   其它说明:   因为数据是记录在session中,所以不用返回
    */
    function addItem($data)
    {
        if(is_array($data)&&!empty($data))
        {
            foreach($data as $key=>$val)
            {
                // 如果商品存在就加数量和价格
                if($this->_isExists($key))
                {
                    $_SESSION['cart'][$key]["count"] += floatval($val['price'])*intval($val['num']);
                    $_SESSION['cart'][$key]["num"]   += intval($val['num']);
                }
                // 否则直接加入
                else
                {
                    $_SESSION['cart'][$key]  = $data[$key];
                    $_SESSION['cart'][$key]["name"]  = $val['name'];
                    $_SESSION['cart'][$key]["price"] = $val['price'];
                    $_SESSION['cart'][$key]["count"] = floatval($val['price'])*intval($val['num']);
                    $_SESSION['cart'][$key]["num"]   = intval($val['num']);
                }
            }
        }
    }
 
    /**
    *   函数名称:   _isExists
    *   函数功