纯干货丨PHP实现购物车的构建

购物车描述的是在线购物的特定机制。当浏览在线类目时,可以在购物车添加特定商品。在完成浏览后,可以直接在在线商店支付,即购买购物车的商品。

要实现Book-O-Rama项目的购物车,需要实现如下功能:

  • 保存有在线售卖商品的数据库

  • 按类目组织的商品在线类目

  • 记录用户希望购买商品的购物车

  • 处理支付和货运详情的结账脚本

  • 管理界面 

 

解决方案组件

你可能记得本书第二篇开发的Book-O-Rama 数据库。在这个项目中,你将实现该数据库的在线商店并在线售卖。解决方案组件将实现如下常规目标:

  • 需要有方法将数据库连接到用户浏览器,应用应该能够按类目浏览商品。

  • 用户还应该可以从类目选取商品以供购买,你应该能够记录用户选择的商品。

  • 在用户完成购物后,需要能够统计订单金额,获取用户送货详情并处理支付。

  • 还应该有Book-O-Rama 站点的管理界面,这样管理员可以添加并编辑站点的图书和类目信息。

在了解了项目目标后,就可以开始设计解决方案和组件了。


构建在线类目

我们已经创建了保存Book-O-Rama 类目信息的数据库。然而要支持在线类目,可能需要对这个数据库进行一些修改和添加。例如,一种添加操作包括添加图书类目,已经在上述需求目标提到。

你还需要在已有数据库添加如下信息:送货地址、支付详情等。你已经了解如何使用PHP 构建访问MySQL 数据库的界面,因此关于管理界面的需求,应该相对简单。在完成顾客订单时,技术上必须采用事务。你需要将Book-O-Rama 表转换为InnoDB存储引擎。这个操作也相对比较直观。

记录用户希望购买的商品

有两种方法可以记录用户希望购买的商品。一种是将用户选择保存在数据库,另一种是使用会话变量。

在页面切换过程中使用会话变量记录用户选择更容易编写,因此它不要求持续的查询数据库来获取该信息。使用这种方法,你也可以避免由于用户随意浏览并不断改变想法从而在数据库中产生垃圾数据的情况。

因此,需要设计会话变量或变量集来保存用户选择。当用户完成购物并支付购买商品时,你可以将这些信息作为事务记录保存在数据库中。

你也可以使用该数据在页面角落显示购物车当前状态的总结,这样用户可以在任何时间都知道其订单总金额。


实现支付系统

在这个项目中,你将增加用户订单以及获取送货详情的功能,但不会真正处理支付。目前有很多可用的支付系统,每个系统实现也各不相同。在这个项目中,你将编写空函数,这个空函数可以由选定的支付系统接口所替代。

尽管可以使用不同的支付系统网关,而且每个网关都有许多不同的接口,实时信用卡处理接口功能大多相似。你需要开启一个商家账户,并提供自己的银行卡,通常你的银行也会有推荐的支付系统服务提供商。支付系统服务提供商将指定需要传递的参数,以及如何传递参数。许多支付系统都有使用PHP 的示例代码,你可以用这些示例代码来代替本章所创建的空函数。

在使用时,支付系统将你的数据传送给银行并且返回成功码或不同的错误码类型。在数据交换的过程,支付网关将对你收取一定费用或年费,以及基于事务涉及金额的费用。有些提供商甚至会收取事务失败(被拒绝)的费用。

支付系统最少要收集如下信息:买家信息(例如信用卡号)、能够标识商家的信息(指定收钱的商家账号)以及该事务涉及的总金额。

你也可以从用户购物车会话变量计算订单金额。然后再将最终订单详情记录到数据库并删除该会话变量。


构建管理界面

除了支付系统,你也需要构建能够增加、删除和编辑数据库中图书及类目信息的管理界面。

常见的编辑操作是修改商品价格(例如,特殊价格或营销活动)。这意味着当保存顾客订单时,应该保存顾客为每个商品支付的价格。如果只有每个顾客订购的商品及每个商品的当前价格,你将会遇到大问题。这意味着如果客户要求退换货,你将无法给顾客返回正确的金额。不必构建履行和订单跟踪界面。但是,你可以根据需要将其添加到系统。


解决方案概述

下面将所有内容整合起来。该系统有两个基本视图:用户视图和管理员视图。在考虑了所需功能后,有两个可用的系统流设计分别对应这两个视图,如图所示。

图1 所示的是Book-O-Rama 站点用户视图中脚本间的连接。顾客将首先访问主页,该主页列出了站点所有在售图书目录,以及每本图书的详情。你将为每本图书给出用来添加至购物车的链接,然后顾客再在在线商店结账。

图2 是管理界面,实现它需要较多脚本,但并没有太多新脚本。这些脚本允许管理员登录

并插入图书和类目信息。

实现图书及类目编辑和删除最简单的方法是为管理员提供不同版本的用户界面。管理员可以浏览类目和图书,但是除了访问购物车,管理员可以找到特定图书或类目并且编辑或删除该图书

或目录。通过使相同脚本适用于普通用户和管理员,可以节省大量时间和精力。

该应用的三个主要代码模块如下所示:

  • 类目

  • 购物车和订单处理(将二者绑定是因为它们强相关)

  • 管理功能

就像其他项目一样,你需要创建并使用函数库。对于这个项目,你使用的函数API 类似于其他项目使用的API。可以将输出HTML 的代码保存在单个函数库中,这样可以遵循将逻辑与内容分开的原则,更重要的是,代码更易于阅读和维护。

针对这个项目,需要对Book-O-Rama 数据库进行简单修改。我们将数据库重命名为book_sc(ShoppingCart,购物车)并将其(购物车数据库)与本书第二篇创建的数据库区分开。购物车应用包含的文件如表1所示。

——本文摘自《PHP和MySQL Web开发(原书第5版)》

(第31章节)    

推荐阅读

《PHP和MySQL Web开发》

原书第5版

ISBN:978-7-111-58773-6

作 者:Luke Welling,Laura Thomson

译 者:熊慧珍 武欣 罗云峰 等译

定 价:129.00元

出版时间:2018/02

内容简介:

PHP和MySQL Web应用开发“圣经”!Luke Welling最新力作!十余年畅销不衰。

与本书第4版相比,第5版进行了全面更新、重写和扩展,详尽介绍了PHP 5.6到7的版本更新和新特性,以及MySQL最新版本的新特性。

点击“阅读原文”查看书籍详情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值