欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第18章 综合案例——应用Smarty模板开发电子商务网站.ppt

    • 资源ID:2867354       资源大小:3.43MB        全文页数:114页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第18章 综合案例——应用Smarty模板开发电子商务网站.ppt

    在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,本章要求:,第18章 综合案例应用Smarty模板开发电子商务网站,如何进行系统分析数据库设计流程搭建系统架构的方法注册即时验证的实现方法简单的树形菜单的实现方法购物车的实现方法订单的处理方法如何注册域名和虚拟空间发布网站的方法,主要内容,1.需求分析2.构建开发环境3.系统设计4.数据库设计5.搭建系统框架6.公共文件设计7.网站主要模块开发8.开发技巧与难点分析9.发布网站,第18章 综合案例应用Smarty模板开发电子商务网站,18.1 需求分析,随着“地球村”概念的兴起,网络已经深入到人们生活的每一个角落。世界越来越小,信息的传播越来越快,内容也越来越丰富。现在,人们对于在网络上寻求信息和服务已不再满足于简单的信息获取上,人们更多的是需要在网上实现方便的、便捷的、可交互式的网络服务。电子商务则正好满足了人们的需求。它可以让人们在网上实现互动的交流及足不出户地购买产品,向企业发表自己的意见、服务需求及有关投诉,并且通过网站的交互式操作向企业进行产品的咨询、得到相应的回馈及技术支持。精明的商家绝不会错过这样庞大的市场,越来越多的企业已经开展了电子商务活动。加入电子商务的行列也许不会让企业马上见到效益,但不加入则一定会被时代所抛弃。,18.2 构建开发环境,在开发电子商务平台时,该项目使用的软件开发环境如下: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 网站功能结构,电子商务平台分前台系统和后台系统。下面分别给出前、后台的系统功能结构图。电子商务前台系统功能结构图如图18-1所示。图18-1 电子商务前台系统功能结构图,电子商务后台系统功能结构图如图18-2所示。图18-2 电子商务后台系统功能结构图,为了便于开发人员了解系统各个功能模块之间的联系及完整的购物流程,下面给出了系统的流程图,如图18-3所示。图18-3 系统流程图,18.3.2 业务流程图,18.4 数据库设计,18.4.1 数据库分析18.4.2 创建数据库与数据表,根据需求分析和系统的功能流程图,找出需要保存的信息数据(也可以理解为现实世界中的实体),并将其转化为原始数据(属性类型)形式。这种描述现实世界的概念模型,可以使用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-R图,还有商品订单实体、商品评价实体、公告实体、管理员实体和类型实体和友情链接实体等,限于篇幅,这里仅列出主要的实体E-R图。,系统E-R图设计完成后,接下来根据E-R图来创建数据库和数据表。首先来看一下电子商务平台所使用的数据表情况,如图18-6所示。图18-6 电子商务数据表,18.4.2 创建数据库与数据表,下面来看各个数据表的结构和字段说明。tb_admin(管理员信息表)管理员信息表主要用于存储管理员的信息,其结构如图18-7所示。图18-7 管理员信息表结构tb_class(商品类型列表)商品类型列表主要用于添加商品的类别,可以设定多个子类别(目前最多只能到二级子类别),其结构如图18-8所示。图18-8 商品类型列表结构,tb_commo(商品信息表)商品信息表主要用于存储关于商品的相关信息,其结构如图18-9所示。图18-9 商品信息表结构 此外还有商品订单表、商品公告表、用户信息表、友情链接表和商品留言表,限于篇幅,这里不再介绍。,编写代码之前,可以把系统中可能用到的文件夹先创建出来(例如,创建一个名为images的文件夹,用于保存程序中所使用的图片),这样不但可以方便以后的开发工作,也可以规范系统的整体架构。因为本项目使用的是Smarty+PDO技术,所以目录较多。下面介绍一下本系统的目录结构(到三级目录),如图18-10所示。图18-10 电子商务网站文件夹组织结构图,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=$dbname;/实现数据库的连接并返回连接对象 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(PDOException$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(count($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)|$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|$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.=下一页;$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.smarty.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=$content;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 后台首页设计,前台首页一般没有多少实质的技术,主要是加载一些功能模块,如登录模块、导航栏模块、公告栏模块等,使浏览者能够了解网站内容和特点。首页的重要之处是要合理地对页面进行布局,既要尽可能地将重点模块显示出来,同时又不能因为页面凌乱无序,而让浏览者无所适从、产生反感。本系统前台首页的运行结果如图18-11所示。图18-11 前台首页运行效果,18.7.1 前台首页,1前台首页技术分析 在前台首页中应用Switch语句与Smarty模板中的内建函数include设计一个框架页面,实现不同功能模块在首页中的展示。Switch语句在PHP动态文件中使用,根据超级链接传递的值,包含不同的功能模块。Include标签在Smarty模板页中使用,在当前模板页中包含其他模板文件。其语法如下:include file=file_name assign=var=参数说明: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;$smarty-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.php;$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 queryform: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标签调用不同的模板文件,生成静态页面。其关键代码如下: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等)尽可能都单独实现。读者在学习其中某个模块时,可以将相关的文件统一放到同一个目录下单独测试。,18.7.2 登录模块设计,用户登录模块是会员功能的窗口。匿名用户虽然也可以访问本网站,但只能进行浏览、查询等简单操作,而会员则可以购买商品,并且能享受超低价格。登录模块包括用户注册、用户登录和找回密码3部分,其运行结果如图18-12所示。图18-12 登录模块运行效果,用户注册 用户注册页面的主要功能是新用户注册。如果信息输入完整而且符合要求,则系统会将该用户信息保存到数据库中,否则显示错误原因,以便用户改正。用户注册页面的运行结果如图18-13所示。图18-13 注册模块页面,(1)创建register.tpl模板文件,编写用户注册页面。其中包含两个JS脚本文件createxmlhttp.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 top.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所示,需要输入用户名、密码和验证码。图18-14 登录模块运行效果,(1)创建模板文件login.tpl,完成用户登录表单的设计。在该页面中当单击Submit按钮时,系统将调用lg()函数对用户登录提交信息进行验证。lg()函数包含在js/login.js脚本文件内,其代码如下:/JavaScript Documentfunction lg(form)if(form.name.value=)alert(请输入用户名);form.name.focus();return false;if(form.password.value=|form.password.value.length 6)alert(请输入正确密码);form.password.focus();return false;if(form.check.value=)alert(请输入验证码);form.check.focus();return false;if(form.check.value!=form.check2.value)form.check.select();code(form);return false;,var user=form.name.value;var password=form.password.value;var url=chkname.php?user=+user+/显示验证码,function yzm(form)var num1=Math.round(Math.random()*10000000);var num=num1.toString().substr(0,4);document.write();form.check2.value=num;/刷新验证码function code(form)var num1=Math.round(Math.random()*10000000);var num=num1.toString().substr(0,4);document.codeimg.src=yzm.php?num=+num;form.check2.value=num;/注册function reg()window.open(register.php,_blank,width=600,height=650,false);/找回密码function found()window.open(found.php,_blank,width=350 height=240,false);用户名和密码是在chkname.php页面中被验证。,(2)创建用户信息模板文件info.tpl。用户登录成功后,在原登录框位置将显示用户信息,用户可以通过“会员中心”对自己的信息做修改,也可以单击“查看购物车”超链接查看购物车商品;当用户离开时可以单击“安全离开”超链接。用户信息模块的主要代码如下:欢迎您:$member会员中心查看购物车安全离开,找回密码 登录模块的最后一个部分就是找回密码。找回密码是根据用户在填写资料时所填写的密保问题和密保答案来实现的。当用户单击“找回密码”超链接时,首先提示用户输入要找回密码的会员名称,然后根据密保问题填写密保答案,最后重新输入密码。找回密码模块的流程如图18-15所示。图18-15 找回密码模块的流程图,(1)创建模板文件虽然找回密码需要4个步骤,但实际上每个步骤使用的都是相同的模板文件和js文件,只是被调用的表单和js函数略有差别。这里根据不同的文件来分别进行介绍。该模板文件一共包含了3个表单,分别代表了3个步骤,其核心代码如下:找回密码 会员名称:找回密码,密保问题:密保答案:输入密码 输入密码:确认密码:可以看出,在上述3个表单中,只有一个表单默认情况下是显示的,其他则为隐藏。只有通过调用不同的js函数,才可以对其他表单进行操作。,(2)创建js脚本文件found.js脚本文件包含3个函数:chkname()、chkanswer()和chkpwd()。其中,chkname()函数的作用是检查用户输入的会员名称,如果存在,则使用xmlhttp对象去调用生成的url进行处理判断。如果该用户存在,则隐藏当前表单,并显示下一个表单,最后输出密保问题。chkname()函数的代码如下:function chkname(form)var user=form.user.value;if(user=)alert(请输入用户名);form.user.focus();return false;elsevar url=foundpwd.php?user=+user;xmlhttp.open(GET,url,true);xmlhttp.onreadystatechange=function()if(xmlhttp.readyState=4)var msg=xmlhttp.responseText;if(msg=0)alert(没有该用户,请重新查找!);form.user.select();return false;elsedocument.getElementById(first).style.display=none;document.getElementById(second).style.display=;document.getElementById(question).innerHTML=msg;,其他两个函数也使用xmlhttprequest对象,实现方法相差无几,不同之处就是对返回值的处理,chkanswer()函数隐藏当前表单,显示下一个表单。chkanswer()函数的代码如下:function chkanswer(form)var user=document.getElementById(user).value;var answer=form.answer.value;if(answer=)alert(请输入提示问题);form.answer.focus();return false;elsevar url=foundpwd.php?user=+user+,而chkpwd()函数则提示用户操作状态,如果成功,则关闭当前页。ckpwd()函数代码如下:function chkpwd(form)var user=document.getElementById(user).value;var pwd1=form.pwd1.value;var pwd2=form.pwd2.value;if(pwd1=)alert(请输入密码);form.pwd1.focus();return false;if(pwd1.length 6)alert(密码输入错误);form.pwd1.focus();return false;if(pwd1!=pwd2)alert(两次密码不相等);form.pwd2.select();return false;var url=foundpwd.php?user=+user+,(3)创建数据处理文件foundpwd.php文件的功能是根据用户输入信息来检测数据表中的数据,并根据不同的输入信息返回不同的结果。该文件代码如下:assign(title,找回密码);$reback=0;/设置变量初始值if(!isset($_GETanswer)/输出返回结果?,(4)加载模板页因为所有登录模块的模板都不需要或者只需要传递一两个变量,所以PHP加载页的内容比较简单。找回密码页面的代码如下:assign(title,找回密码);$smarty-display(found.tpl);?,18.7.3 会员信息模块设计,用户登录后,即可看到会员信息模块。在这里,可以进行查看或修改个人信息及密码、查看购物车和安全退出等操作。本节只对会员信息模块中的“会员中心”和“安全退出”进行讲解,关于“查看购物车”将在商品模块中进行介绍。会员信息模块的运行效果如图18-16所示。图18-16 会员信息模块,会员信息模块技术分析在会员信息模块中,以SESSION变量中存储的用户名称为条件,从会员信息表中查询出会员信息,并且将会员信息存储到模板变量中,最后在模板页中输出会员信息。member.php的代码如下:ExecSQL($sql,$conn);if(isset($_GETaction)?member.php文件中查询出的数据是会员信息模板功能实现的根本。,会员中心当单击“会员中心”超链接时,会回传给当前页一个page值,当前页根据这个page值来载入member.php文件。(1)创建PHP页面与登录模块设计不同,本节首先来创建PHP页面。因为该模块中的模板需要使用数据库中的数据及一些动态信息,这些都需要在PHP页中先行获取及处理,然后再传给模板页。会员中心页面的代码请参考技术分析中的内容。,(2)创建模板页该模块包括查看信息模板及修改密码模板,都存储于member.tpl模板文件中。if$check=find$smarty.session.member修改密码 修改密码 原密码:新密码:,确认密码:else$smarty.session.member$pwdarrpwd_id.name,密保问题:*,身份证号:*Email:,QQ号:邮编:地址:/section/if,(3)创建脚本文件该模块的脚本文件和用户注册模块类似,都是对信息的合法性进行验证,如信息是否为空、是否符合规范等,这里不再赘述。(4)创建处理页当信息验证通过后,系统将跳转到处理页进行信息处理。本模块处理页分信息修改和密码修改两个页面。首先介绍信息修改页,代码如下:ExecSQL($sql,$conn);if($arr)echo alert(修改成功);location=(index.php);elseecho alert(修改失败);history.go(-1);?,密码修改页的操作流程也十分类似,只是更新的数组要小得多,只有一个字段。修改密码页代码如下:ExecSQL($sql,$conn);/判断用户名和密码是否正确if($arr)$sql=update tb_user set password=.md5($_POSTnew1).where name=.$_SESSIONmember.and password=.md5($_POSTold).;/更新密码$arr=$admindb-ExecSQL($sql,$conn);echo alert(密码修改成功!);window.location.href=index.php;elseecho alert(密码修改失败!);window.location.href=index.php;?,安全退出当用户需要离开网站时,可以单击“安全退出”超链接来调用logout()函数,当用户确认退出后,则跳转到logout页面,销毁session并回到首页。安全退出所涉及的页面及代码如下:function logout()if(confirm(确定要退出登录吗?)/输出选择框,用户可以单击“确认”或“取消”按钮window.open(logout.php,_parent,false);/如果用户确认退出,则打开logout.php页else return false;alert(用户已安全退出!);location=(index.php);?,18.7.4 商品展示模块设计,本系统为用户提供了不同的商品展示方式,包括推荐商品、最新商品、热门商品等,能够使消费者有目的地选购商品。每个展示方式中包括商品的详细信息显示,为用户购买商品提供可靠的依据。本系统商品显示模块的运行结果如图18-17所示。图18-17 商品展示模块页面,商品展示模块技术分析商品显示功能实现的关键就是如何从数据库中读取商品信息,如何完成数据的分页显示。在定义SQL语句时,首先判断字段isnom的值,如果该字段为1,即为推荐,否则为不推荐,然后在定义数据降幂排列,并设置每页显示4条记录,这就是完成商品显示的查询语句,其代码如下:ExecSQL($newsql,$conn);/执行SQL语句,降幂排列,显示4条记录$hotarr=$admindb-ExecSQL($hotsql,$conn);$nomarr=$admindb-ExecSQL($sql,$conn);$smarty-assign(newarr,$newarr);/将查询结果赋给指定的模板变量$smarty-assign(hotarr,$hotarr);$smarty-assign(nomarr,$nomarr);?,最后,定义模板文件,通过section语句循环输出存储在模板变量中的数据,即完成商品展示的操作。section 是Smarty模板中的一个循环语句,该语句用于复杂数组的输出。其语法如下:section name=”sec_name”loop=$arr_name start=num step=num参数含义:name是该循环的名称;loop为循环的数组;start表示循环的初始位置,如start=2,那么说明循环是从loop数组的第2个元素开始的;step表示步长,如step=2,那么循环一次后,数组的指针将向下移动两位,以此类推。,商品展示模块的实现过程在技术分析中已经对商品显示所使用的技术、方法进行概述,下面就介绍一下它具体的过程:(1)创建newhot.php文件,从数据库中读取出推荐商品的数据,并将数据存储到模板变量中,其代码可以参考技术分析。(2)创建newhot.tpl模板页,应用section语句输出商品信息,并添加相应的操作按钮或链接。模板页中一共有3个事件:显示更多商品、查看商品和放入购物车。当单击“更多商品”超链接时,将会重新加载本页面,并传递一个page变量。switch语句会根据page值来显示。当单击“查看详情”按钮时,将触发onclick事件,并将调用openshowcommo()函数,同时,商品id会作为函数的唯一参数被传递进去。当单击“购买”按钮时,同样会触发onclick事件,并调用buycommo()函数,唯一的参数也是商品的id。,商品模板页面的代码如下:onclick=openshowcommo($newarrnew_id.id)/,$newarrnew_id.name 市场价:$newarrnew_id.m_price onclick=openshowcommo($hotarrhot_id.id)/,$hotarrhot_id.name 市场价:$hotarrhot_id.m_price 会员价:$hotarrhot_id.v_price counter if$counts mod 2!=0/if/section section name=nom_id loop=$nomarr,area shape=rect coords=585,8,635,27,(3)创建showcommo.js脚本文件。当单击“查看商品”按钮时,系统会弹出一个新的页面,并显示商品的详细信息;当单击“购买”按钮时,该商品将会被放到当前用户的购物车中,如果没有登录用户或商品已添加,则会提示错误信息。js脚本文件的代码如下:/*查看商品信息函数,将打开一个新页面*/function openshowcommo(key)open(showcommo.php?id=+key,_blank,width=560 height=300,false);/*将购买商品添加到购物车中,将在下节中讲解*/function buycommo(key),18.7.5 购物车模块设计,购物车在电子商务平台中是前台客户端程序中非常关键的一个功能模块。购物车的主要功能是保留用户选择的商品信息,用户可以在购物车内设置选购商品的数量,显示选购商品的总金额,还可以清除选择的全部商品信息,重新选择商品信息。购物车页面运行结果如图18-18所示。图18-18 购物车页面,购物车模块技术分析购物车功能实现最关键的部分就是如何将商品添加到购物车,如果不能完成商品的添加,哪么购物车中的其他操作都没有任何意义。(1)在商品显示模块中,单击商品中的“购买”按钮,将商品放到购物车中,并进入到“购物车”页面。单击“购买”按钮调用buycommo()函数,购买商品的id是该函数的唯一参数,在buycommo()函数中通过xmlhttp对象调用chklogin.php文件,并根据回传值作出相应处理。buycommo()函数代码如下:/*添加商品,同时检查用户是否登录、商品是否重复等*/function buycommo(key)/*根据商品ID,生成url*/var url=chklogin.php?key=+key;/*使用xmlhttp对象调用chklogin.php页*/xmlhttp.open(GET,url,true);xmlhttp.onreadystatechange=function()if(xmlhttp.readyState=4)var msg=xmlhttp.responseText;/*用户没有登录*/if(msg=2)alert(请您先登录);return false;else if(msg=3)/*商品已添加*/alert(该商品已添加);return false;else/*显示购物车*/location=index.php?page=shopcar;xmlhttp.send(null);,在chklogin.php文件中将商品添加到购物车中。chklogin.php页代码如下:?phpsession_start();header(Content-type:text/html;charset=UTF-8);/设置文件编码格式require(system/system.inc.php);/包含配置文件/*1表示添加成功*2表示用户没有登录*3表示商品已添加过*4表示添加时出现错误*5表示没有商品添加*/$reback=0;if(empty($_SESSIONmember)$reback=2;else$key=$_G

    注意事项

    本文(第18章 综合案例——应用Smarty模板开发电子商务网站.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开