第18章 综合案例——应用Smarty模板开发电子商务网站.ppt
《第18章 综合案例——应用Smarty模板开发电子商务网站.ppt》由会员分享,可在线阅读,更多相关《第18章 综合案例——应用Smarty模板开发电子商务网站.ppt(114页珍藏版)》请在三一办公上搜索。
1、在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,本章要求:,第18章 综合案例应用Smarty模板开发电子商务网站,如何进行系统分析数据库设计流程搭建系统架构的方法注册即时验证的实现方法简单的树形菜单的实现方法购物车的实现方法订单的处理方法如何注册域名和虚拟空间发布网站的方法,主要内容,1.需求分析2.构建开发环境3.系统设计4.数据库设计5.搭建系统框架6.公共文件设计7.网站主要模块开发8.开发技巧与难点分析9.发布网站,第18章 综合案例应用Smarty模板开发电子商务网站,18.1 需求分析,随着
2、“地球村”概念的兴起,网络已经深入到人们生活的每一个角落。世界越来越小,信息的传播越来越快,内容也越来越丰富。现在,人们对于在网络上寻求信息和服务已不再满足于简单的信息获取上,人们更多的是需要在网上实现方便的、便捷的、可交互式的网络服务。电子商务则正好满足了人们的需求。它可以让人们在网上实现互动的交流及足不出户地购买产品,向企业发表自己的意见、服务需求及有关投诉,并且通过网站的交互式操作向企业进行产品的咨询、得到相应的回馈及技术支持。精明的商家绝不会错过这样庞大的市场,越来越多的企业已经开展了电子商务活动。加入电子商务的行列也许不会让企业马上见到效益,但不加入则一定会被时代所抛弃。,18.2
3、构建开发环境,在开发电子商务平台时,该项目使用的软件开发环境如下:1服务器端操作系统:Windows 2003 Server/Linux(推荐)。服务器:Apache 2.2.8。PHP软件:PHP 5.2.6。数据库:MySQL 5.0.51。MySQL图形化管理软件:phpMyAdmin-2.10.3。开发工具:Dreamweaver 8。浏览器:IE 6.0及以上版本。分辨率:最佳效果为1024768像素。2客户端浏览器:推荐IE 6.0及以上版本。分辨率:最佳效果为1024768像素。,18.3 系统设计,18.3.1 网站功能结构18.3.2 业务流程图,18.3.1 网站功能结构,
4、电子商务平台分前台系统和后台系统。下面分别给出前、后台的系统功能结构图。电子商务前台系统功能结构图如图18-1所示。图18-1 电子商务前台系统功能结构图,电子商务后台系统功能结构图如图18-2所示。图18-2 电子商务后台系统功能结构图,为了便于开发人员了解系统各个功能模块之间的联系及完整的购物流程,下面给出了系统的流程图,如图18-3所示。图18-3 系统流程图,18.3.2 业务流程图,18.4 数据库设计,18.4.1 数据库分析18.4.2 创建数据库与数据表,根据需求分析和系统的功能流程图,找出需要保存的信息数据(也可以理解为现实世界中的实体),并将其转化为原始数据(属性类型)形式
5、。这种描述现实世界的概念模型,可以使用E-R图来表示。也就是实体-联系图。最后将E-R图转换为关系数据库。这里重点介绍几个E-R图。1会员信息实体 会员信息实体包括编号、用户名、密码、E-mail、身份证号、联系电话、QQ号、密码提示、密码答案、邮编、注册时间、真实姓名等属性。会员信息实体E-R图如图18-4所示。图18-4 会员信息实体E-R图,18.4.1 数据库分析,2商品信息实体 商品信息实体包括编号、名称、上市时间、添加时间、型号、图片、库存、销售、商品类型、会员价、市场价、是否打折等属性。商品信息实体E-R图如图18-5所示。图18-5 商品信息实体E-R图 除了上面介绍的2个E-
6、R图,还有商品订单实体、商品评价实体、公告实体、管理员实体和类型实体和友情链接实体等,限于篇幅,这里仅列出主要的实体E-R图。,系统E-R图设计完成后,接下来根据E-R图来创建数据库和数据表。首先来看一下电子商务平台所使用的数据表情况,如图18-6所示。图18-6 电子商务数据表,18.4.2 创建数据库与数据表,下面来看各个数据表的结构和字段说明。tb_admin(管理员信息表)管理员信息表主要用于存储管理员的信息,其结构如图18-7所示。图18-7 管理员信息表结构tb_class(商品类型列表)商品类型列表主要用于添加商品的类别,可以设定多个子类别(目前最多只能到二级子类别),其结构如图
7、18-8所示。图18-8 商品类型列表结构,tb_commo(商品信息表)商品信息表主要用于存储关于商品的相关信息,其结构如图18-9所示。图18-9 商品信息表结构 此外还有商品订单表、商品公告表、用户信息表、友情链接表和商品留言表,限于篇幅,这里不再介绍。,编写代码之前,可以把系统中可能用到的文件夹先创建出来(例如,创建一个名为images的文件夹,用于保存程序中所使用的图片),这样不但可以方便以后的开发工作,也可以规范系统的整体架构。因为本项目使用的是Smarty+PDO技术,所以目录较多。下面介绍一下本系统的目录结构(到三级目录),如图18-10所示。图18-10 电子商务网站文件夹组
8、织结构图,18.5 搭建系统框架,18.6 公共文件设计,18.6.1 数据库连接、管理和分页类文件18.6.2 Smarty模板配置类文件18.6.3 执行类的实例化文件,在数据库连接、管理和分页类文件中,定义三个类。分别是ConDB数据库连接类,实现通过PDO连接MySQL数据库;AdminDB数据库管理类,使用PDO类库中的方法执行对数据库中数据的查询、添加、更新和删除操作;SepPage分页类,用于对商城中的数据进行分页输出。dbtype=$dbtype;$this-host=$host;$this-user=$user;$this-pwd=$pwd;$this-dbname=$dbn
9、ame;/实现数据库的连接并返回连接对象 function GetConnId()if($this-dbtype=mysql|$this-dbtype=mssql)$dsn=$this-dbtype:host=$this-host;dbname=$this-dbname;else$dsn=“$this-dbtype:dbname=$this-dbname”;try$conn=new PDO($dsn,$this-user,$this-pwd);/初始化一个PDO对象,就是创建了数据库连接对象$pdo$conn-query(set names utf8);return$conn;catch(PD
10、OException$e)die(Error!:.$e-getMessage().);,18.6.1 数据库连接、管理和分页类文件,/数据库管理类class AdminDBfunction ExecSQL($sqlstr,$conn)$sqltype=strtolower(substr(trim($sqlstr),0,6);$rs=$conn-prepare($sqlstr);/准备查询语句$rs-execute();/执行查询语句,并返回结果集if($sqltype=select)$array=$rs-fetchAll(PDO:FETCH_ASSOC);/获取结果集中的所有数据if(coun
11、t($array)=0|$rs=false)return false;elsereturn$array;elseif($sqltype=update|$sqltype=insert|$sqltype=delete)if($rs)return true;else return false;/分页类class SepPage,var$rs;var$pagesize;var$nowpage;var$array;var$conn;var$sqlstr;function ShowData($sqlstr,$conn,$pagesize,$nowpage)/定义方法if(!isset($nowpage)|
12、$nowpage=)/判断变量值是否为空$this-nowpage=1;/定义每页起始页else$this-nowpage=$nowpage;$this-pagesize=$pagesize;/定义每页输出的记录数$this-conn=$conn;/连接数据库返回的标识$this-sqlstr=$sqlstr;/执行的查询语句$this-rs=$this-conn-PageExecute($this-sqlstr,$this-pagesize,$this-nowpage);$this-array=$this-rs-GetRows();/获取记录数if(count($this-array)=0|
13、$this-rs=false)return false;elsereturn$this-array;function ShowPage($contentname,$utits,$anothersearchstr,$anothersearchstrs,$class)$allrs=$this-conn-Execute($this-sqlstr);/执行查询语句$record=count($allrs-GetRows();/统计记录总数,$pagecount=ceil($record/$this-pagesize);/计算共有几页$str.=$contentname.else,$str.=下一页;$
14、str.=?,在Smarty模板配置类文件中配置Smarty模板文件、编译文件、配置文件等文件路径。template_dir=./system/templates/;/指定模板文件存储位置$this-compile_dir=./system/templates_c/;/指定编译文件存储位置$this-config_dir=./system/configs/;/指定配置文件存储位置$this-cache_dir=./system/cache/;/指定缓存文件存储位置?,18.6.2 Smarty模板配置类文件,在system.inc.php文件中,通过require语句包含system.smar
15、ty.inc.php和system.class.inc.php文件,执行类的实例化操作,并定义返回对象。完成数据库连接类的实例化后,调用其中GetConnId()方法连接数据库。GetConnId();/执行连接操作,返回连接标识$admindb=new AdminDB();/数据库操作类实例化$seppage=new SepPage();/分页类实例化$usefun=new UseFun();/使用常用函数类实例化$smarty=new SmartyProject();/调用smarty模板function unhtml($params)extract($params);$text=$con
16、tent;global$usefun;return$usefun-UnHtml($text);$smarty-register_function(unhtml,unhtml);/注册模板函数?,18.6.3 执行类的实例化文件,18.7 网站主要模块开发,18.7.1 前台首页18.7.2 登录模块设计18.7.3 会员信息模块设计18.7.4 商品展示模块设计18.7.5 购物车模块设计18.7.6 收银台模块设计18.7.7 后台首页设计,前台首页一般没有多少实质的技术,主要是加载一些功能模块,如登录模块、导航栏模块、公告栏模块等,使浏览者能够了解网站内容和特点。首页的重要之处是要合理地对
17、页面进行布局,既要尽可能地将重点模块显示出来,同时又不能因为页面凌乱无序,而让浏览者无所适从、产生反感。本系统前台首页的运行结果如图18-11所示。图18-11 前台首页运行效果,18.7.1 前台首页,1前台首页技术分析 在前台首页中应用Switch语句与Smarty模板中的内建函数include设计一个框架页面,实现不同功能模块在首页中的展示。Switch语句在PHP动态文件中使用,根据超级链接传递的值,包含不同的功能模块。Include标签在Smarty模板页中使用,在当前模板页中包含其他模板文件。其语法如下:include file=file_name assign=var=参数说明:
18、file指定包含模板文件的名称;assign指定一个变量保存包含模板的输出;var传递给待包含模板的本地参数,只在待包含模板中有效。,2前台首页实现过程(1)创建index.php动态页。在index.php动态页中,应用include_once()语句包含相应的文件,应用Switch语句,以超级链接中参数page传递的值为条件进行判断,实现在不同页面之间跳转。index.php的关键代码如下:assign(admin_phtml,member.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量break;case allpub:include_once allpub.php;$sma
19、rty-assign(admin_phtml,allpub.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量,break;case nom:include_once allnom.php;$smarty-assign(admin_phtml,allnom.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量break;case new:include_once allnew.php;$smarty-assign(admin_phtml,allnew.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量break;case hot:include_once allhot.p
20、hp;$smarty-assign(admin_phtml,allhot.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量break;case shopcar:include_once myshopcar.php;$smarty-assign(admin_phtml,myshopcar.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量,break;case settle:include_once settle.php;$smarty-assign(admin_phtml,settle.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量break;case query
21、form:include_once queryform.php;$smarty-assign(admin_phtml,queryform.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变量break;default:include_once newhot.php;$smarty-assign(admin_phtml,newhot.tpl);/将PHP脚本文件对应的模板文件名称赋给模板变break;$smarty-display(index.tpl);/指定模板页?,(2)创建index.tpl模板页。在模板文件index.tpl中应用Smarty的include标签调用不同的模板文件,
22、生成静态页面。其关键代码如下:include file=top.tpl include file=login.tplinclude file=public.tplinclude file=links.tpl include file=search.tplinclude file=$admin_phtml include file=buttom.tpl 说明:本系统的功能较多,结构比较复杂,对于初学者来说学起来可能会比较困难。所以,本书将系统中的各个功能模块所涉及的文件(如PHP、TPL、CSS、JS等)尽可能都单独实现。读者在学习其中某个模块时,可以将相关的文件统一放到同一个目录下单独测试。,
23、18.7.2 登录模块设计,用户登录模块是会员功能的窗口。匿名用户虽然也可以访问本网站,但只能进行浏览、查询等简单操作,而会员则可以购买商品,并且能享受超低价格。登录模块包括用户注册、用户登录和找回密码3部分,其运行结果如图18-12所示。图18-12 登录模块运行效果,用户注册 用户注册页面的主要功能是新用户注册。如果信息输入完整而且符合要求,则系统会将该用户信息保存到数据库中,否则显示错误原因,以便用户改正。用户注册页面的运行结果如图18-13所示。图18-13 注册模块页面,(1)创建register.tpl模板文件,编写用户注册页面。其中包含两个JS脚本文件createxmlhttp.
24、js和check.js。其中,createxmlhttp.js是Ajax的实例化文件,而check.js对用户注册信息进行验证,并且返回验证结果。(2)创建register.php动态PHP文件,加载模板。register.php文件的代码如下:assign(title,新用户注册);$smarty-display(register.tpl);?,(3)创建reg_chk.php文件,获取表单中提交的数据,将数据存储到指定的数据表中。reg_chk.php的代码如下:ExecSQL($sql,$conn);/执行添加操作if($rst)$_SESSIONmember=$name;echo to
25、p.opener.location.reload();alert(注册成功);window.close();elseecho alert(添加失败);history.back;?,(4)创建“用户注册”超链接。当用户单击前台的 按钮时,系统会调用js的onclick事件,弹出注册窗口。其代码如下:这里使用到的js文件为js/login.js,调用的函数为reg()。该函数的代码如下:function reg()window.open(register.php,_blank,width=600,height=650,false);/弹出窗口,用户登录用户登录模块的运行结果如图18-14所示,需要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第18章 综合案例应用Smarty模板开发电子商务网站 18 综合 案例 应用 Smarty 模板 开发 电子商务 网站
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2867354.html