php 购物车实例(申精)


Posted in PHP onMay 11, 2009

if(! $session && ! $scid) {
/*
session用来区别每一个购物车,相当于每个车的身份证号;
scid只用来标识一个购物车id号,可以看做是每个车的名字;
当该购物车的id和session值两者都不存在时,就产生一个新购物车
*/
$session = md5(uniqid(rand()));
/*
产生一个唯一的购物车session号
rand()先产生个随机数,uniqid()再在该随机数的基础上产生一个独一无二的字符串,最后对该字符串进行md5
*/
SetCookie(scid, $session, time() + 14400);
/*
设置该购物车cookie
变量名:scid(不知到这里是不是少了一个 $号呢?=》更正: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; //返回总量
}
}

PHP 相关文章推荐
PHP用mysql数据库存储session的代码
Mar 05 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
php生成RSS订阅的方法
Feb 13 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
PHP 9 大缓存技术总结
Sep 17 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
PHP培训要多少钱
Jun 06 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 PHP
PHP 编写的 25个游戏脚本
May 11 #PHP
PHPMyAdmin 快速配置方法
May 11 #PHP
PHP 在线翻译函数代码
May 07 #PHP
PHP SQLite类
May 07 #PHP
php结合飞信 免费天气预报短信
May 07 #PHP
PHP 身份证号验证函数
May 07 #PHP
php 购物车的例子
May 04 #PHP
You might like
php 获取远程网页内容的函数
2009/09/08 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
django fernet fields字段加密实践详解
2019/08/12 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
露营世界:Camping World
2017/02/02 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
一个精品风格的世界:Atterley
2019/05/01 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
国家助学金获奖感言
2014/01/31 职场文书
学生党员公开承诺书
2014/05/28 职场文书
加入学生会自荐书
2015/03/05 职场文书
员工手册董事长致辞
2015/07/29 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
Python 键盘事件详解
2021/11/11 Python