1、PHP+MySQL动态网页技术教程,第8章 图书商城购物车模块开发,8.1 项目导引:购物车模块,在现实超市中我们是如何购物?来到超市购买商品,首先我们推上车子,开始选购商品,将商品放入车中,选购完商品后,到结算中心结算。在图书商城中如何购物?在图书商城中购买图书的流程和在超市购买商品流程类似。来到商城选购图书将图书放入购物车结算下订单。图书商城中所说的购物车的作用也与超市中的车子类似,用来存放用户选购的商品,那么大家思考一下,用PHP如何实现购物车呢?,8.2 项目分析:当当网购物,购物车是用来储存用户购买的图书,用户可以将选中的图书添加到购物车中、修改购物车中的图书数量、移除购物车中的某件
2、图书、清空购物车、查看购买图书的总价格等1选购图书来到当当网,完成用户的注册登录,然后,开始选购图书,看到喜欢的图书,单击“购买”按钮,将图书放入购物车中,同时页面跳转到购物车管理页面,如图所示。,8.2 项目分析:当当网购物,2购物车管理在购物车管理页面用户可以将图书从购物车中移除,修改购买数量,清空购物车,计算图书总价格,继续购物和结算功能,如图8所示。,8.2 项目分析:当当网购物,3生成订单单击“结算”按钮,进入填写订单信息页面,如图所示。完成用户等信息填写后,单击“提交订单”按钮,将订单信息插入到数据库中的订单表,生成订单,完成图书购买。,8.2 项目分析:当当网购物,4订单管理单击
3、“我的订单”按钮,进入订单管理页面,如图所示。这里我们可以修改和取消订单信息。修改和取消订单就是在修改和删除订单表中的记录。,8.2 项目分析,开发购物车的方法有两种:一种是将购物信息存储到数据表中二种是将购物信息存储到Session变量中购物车模块功能结构如图所示,8.3 技术准备,8.3.1相关函数array_key_exists()函数函数用于检查键名是否存在于指定数组中,语法格式如下:bool array_key_exists ( mixed key, array search )例8-1list()函数函数用于将数组中的值赋给一些变量,语法格式如下所示:void list ( mix
4、ed varname, mixed . )例8-2,8.3 技术准备,8.3.1相关函数each()函数函数返回数组中当前的键值对,并将数组指针向前移动一步。函数语法格式如下所示:array each ( array &array )键值对被返回为包含四个单元的数组,键名为0、1、key和value,单元0和key包含有数组的键名,单元1和value包含有数组的值。例8-3数组形态的Cookie和SessionCookie和Session都可以利用多维数组的形式,将多个内容存储在相同名称的Cookie或Session中。例8-4、例8-5,8.4 项目实施,下面我们通过Session的方法开发
5、购物车,主要实现添加图书到购物车,查看购物车,删除购物车中的图书,清空购物车、修改购买图书的数量和生成订单的功能。8.4.1 购买图书在图书展示区,单击相应图书的“购买”或“加入购物车”按钮,即可将图书信息放入购物车中。完成添加图书至购物车功能需要创建图书购买和添加图书至购物车两个页面。购买页面负责显示图书信息,如图所示。,8.4 项目实施,8.4.1 购买图书添加图书至购物车的实现过程为:当单击“购买”按钮时,将图书编号传给添加图书至购物车页面(addgwc.php),添加图书至购物车页面接收图书购买页面传递过来的图书编号,根据图书编号查询出图书相关信息,将图书编号、图书姓名和购买数量等图书
6、信息保存到一个二维数组中,再将这个二维数组保存到Session中,因为只有这样才能保证用户购买的图书信息在不同页面存在。如果我们把二维数组看成是购物车,那么用户购买的每本图书就是二维数组的一个元素。关于图书购买数量我们是这样处理的,用户第一次购买时默认购买数量是1,如果用户重复购买,则在原购买数量基础上加1。,8.4 项目实施,8.4.2 查看购物车当用户购物成功后,进入购物车管理页面,如图所示。在此可以看到购买的图书信息,包括图书名称、图书实际价格和购买数量等内容。在购买图书时,将图书信息信息保存到了Session中,此时只需从Session中取出这些信息,输出到网页中即可。,8.4 项目实
7、施,8.4.3 移除图书在购物车管理页面,当我们单击“取消图书”超链接时(取消图书),即可删除购物车中的某个图书。程序运行过程为:单击取消图书时,将取消的图书编号传给移除图书页面(delgwc1.php),移除图书页面根据图书编号删除对应的Session变量的值。,8.4 项目实施,8.4.4 修改图书数量在图书数量文本框中修改图书的数量,单击“修改图书数量”按钮即可完成图书数量的修改,如图所示。程序运行过程为:当单击“修改图书数量”按钮()时,新的购买数量被提交给修改图书数量页面(changegwc.php),图书数量修改页面把新的购买数量替换Session中原购买数量即可。,8.4 项目实
8、施,8.4.5 清空购物车当单击“清空购物车”超链接时(清空购物车),购物车管理页面中没有任何图书信息。清空购物车就是将购物车的Session变量销毁。,8.4 项目实施,8.4.6 生成订单在购物车管理页面核实完购买图书信息后,单击“结算”按钮,进入填写收货人信息页面(dingdan.php),如图所示。在用户填写完收货地址等信息后,单击“提交订单”按钮,将订单信息插入到数据库订单表,完成生成订单过程。,8.5 技术拓展,8.5.1 时间日期函数1时区设置(1)修改PHP配置文件在php.ini中找到date.timezone选项,将其值设置为“RPC”(中华人民共和国)、“Asia/Sha
9、ng”(上海)、“Asia/Chongqing”(重庆)或“Asia/Urumpi”(乌鲁木齐)中的一个。(2)date_default_timezone_set()函数在应用程序中,在日期、时间函数之前使用此函数可以完成对时区的设置,函数语法如下:bool date_default_timezone_set (timezone )参数timezone为时区名称,具体值同上。,8.5 技术拓展,8.5.1 时间日期函数2UNIX时间戳在UNIX系统中,日期和时间表示为1970年1月1日零点起到当前时间的秒数,这个时间称为UNIX时间戳。这是大多数计算机表示时间的一种标准格式,用32位的整数来表
10、示。mktime()函数:用于将一个时间转换为UNIX时间戳time()函数:用于获取当前系统的UNIX时间戳例8-14,8.5 技术拓展,8.5.1 时间日期函数3日期和时间处理getdate()函数:可以获取日期和时间信息,返回一个根据时间戳取得的由日期、时间信息组成关联数组 date()函数:用于对本地日期、时间进行格式化checkdate()函数:检验日期和时间的有效性例8-15 、例8-16 、例8-17,8.6 本章小结,本章我们通过当当网购物体验和购物车模块的分析,完成了“天天书屋”购物车模块的开发,主要包括图书购买、购物车管理(修改数量、取消图书、清空购物车)、生成订单和订单管理功能。为了保证大家学习PHP知识的系统性,在技术拓展部分介绍了PHP的日期、时间函数。,8.7 强化练习,一、简答题1简述购物车模块的主要功能及处理流程2简述购物车实现的思路二、操作题1完善购物车模块的开发,增加前台用户订单查看和删除的功能。,