版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
购物车模块设计本讲大纲:1购物车模块概述2购物车展示3更改商品数量4删除商品5保存购物车购物车模块概述购物车是电子商务平台中非常关键的一个功能模块。购物车的主要功能是保留用户选择的商品信息,用户可以在购物车内设置选购商品的数量,显示选购商品的总金额,还可以清除选择的全部商品信息,重新选择商品信息。购物车页面运行结果如图6-16所示。购物车模块除了展示用户购买的商品之外,还实现添加商品、更改商品数量、删除商品和清空购物车等操作。图6-16购物车页面购物车展示(1)购物车页面分PHP代码页和Smarty模板页。在PHP代码页中,首先读取tb_user数据表中shopping字段的内容,如果字段为空,则输出“暂无商品”;如果数据库中有数据,则循环输出数据,并将商品信息保存到数组中,再传给模板页。购物车页myshopcar.php的代码如下:<?php$select="selectid,shoppingfromtb_userwherename='".$_SESSION['member']."'";$rst=$admindb->ExecSQL($select,$conn);if($rst[0]['shopping']==""){ echo"<script>alert('购物车中暂时没有商品!');window.location.href='index.php';</script>";}$commarr=array();foreach($rst[0]as$value){
购物车展示(2)$tmpnum=explode('@',$value); $shopnum=count($tmpnum); //商品类数 $sum=0; foreach($tmpnumas$key=>$vl){$s_commo=explode(',',$vl); $sql2="selectid,name,m_price,fold,v_pricefromtb_commo"; $commsql=$sql2."whereid=".$s_commo[0]; $arr=$admindb->ExecSQL($commsql,$conn); @$arr[0]['num']=$s_commo[1]; @$arr[0]['total']=$s_commo[1]*$arr[0]['v_price']; $sum+=$arr[0]['total']; $commarr[$key]=$arr[0];
购物车展示(3)}}$smarty->assign('shoparr',$shopnum);$smarty->assign('commarr',$commarr);$smarty->assign('sum',$sum);?>
商品的模板页system\templates\myshopcar.tpl不仅要负责用户购买商品信息的输出,而且还要提供可以对商品进行修改、删除等操作的事件接口。模板页代码如下:<tableborder="0"cellspacing="0"cellpadding="0"align="center"><formid="myshopcar"name="myshopcar"method="post"action="#"><tr>
购物车展示(4)<tdheight="30"colspan="7"align="center"valign="middle"class="first">我的购物车</td></tr><tr><tdwidth="35"height="25"align="center"valign="middle"class="left"> </td><tdwidth="100"height="25"align="center"valign="middle"class="center">商品名称</td><tdwidth="100"height="25"align="center"valign="middle"class="center">购买数量</td><tdwidth="100"height="25"align="center"valign="middle"class="center">市场价格</td><tdwidth="100"height="25"align="center"valign="middle"class="center">会员价格</td>
购物车展示(5)<tdwidth="100"height="25"align="center"valign="middle"class="center">折扣率</td><tdwidth="100"height="25"align="center"valign="middle"class="right">合计</td></tr>{foreachkey=keyitem=itemfrom=$commarr}<tr><tdheight="25"align="center"valign="middle"class="left"><inputid="chk"name="chk[]"type="checkbox"value="{$item.id}"></td><tdheight="25"align="center"valign="middle"class="center"><divid="c_name{$key}"> {$}</div></td><tdheight="25"align="center"valign="middle"class="center"><inputid="cnum{$key}"name="cnum{$key}"type="text"class="shorttxt"value="{$item.num}"onkeyup="cvp({$key},{$item.v_price},{$shoparr})"></td>购物车展示(6)<tdheight="25"align="center"valign="middle"class="center"><divid="m_price{$key}"> {$item.m_price}</div></td><tdheight="25"align="center"valign="middle"class="center"><divid="v_price{$key}"> {$item.v_price}</div></td><tdheight="25"align="center"valign="middle"class="center"><divid="fold{$key}"> {$item.fold}</div></td><tdheight="25"align="center"valign="middle"class="right"><divid="total{$key}"> {$item.total}</div></td></tr>{/foreach}<tr><tdheight="25"colspan="3"align="left"valign="middle"><ahref="#"onclick="returnalldel(myshopcar)">全选</a><ahref="#"购物车展示(7)onclick="returnoverdel(myshopcar);">反选</a> <inputtype="button"value="删除选择"class="btn"style="border-color:#FFFFFF;"onClick='returndel(myshopcar);'> </td><tdheight="25"align="center"valign="middle"><inputid="cont"name="cont"type="button"class="btn"value="继续购物"onclick="returnconshop(myshopcar)"/></td><tdheight="25"align="center"valign="middle"><inputid="uid"name="uid"type="hidden"value="{$smarty.session.member}"><inputid="settle"name="settle"type="button"class="btn"value="去收银台"onclick="returnformset(form)"/></td><tdheight="25"colspan="2"align="right"valign="middle"><divid='sum'>共计:{$sum} 元</div></td></tr></form></table>更改商品数量(1)对于新添加的商品,默认的购买数量为1,在购物车页面可以对商品的数量进行修改。当商品数量发生变化时,商品的“合计”金额和商品总金额会自动发生改变,该功能是通过触发text文本域的onkeyup事件调用cvp()函数实现。cvp()函数有3个参数,分别是商品id、商品单价和商品类别。在shopcar.js文件中,首先通过商品的id可以得到要修改商品的相关表单和标签属性。然后通过商品单价和输入的商品数量计算该商品的合计金额。接着使用for循环得到其他商品的合计金额。最后将所有的合计金额累加,并输出到购物车页面。cvp()函数代码如下:functioncvp(key,vpr,shoparr){ varn_pre='total'; varnum='cnum'+key.toString(); vartotal=n_pre+key.toString();
更改商品数量(2)vart_number=document.getElementById(num).value; varttl=t_number*vpr; document.getElementById(total).innerHTML=ttl; varsm=0; for(vari=0;i<shoparr;i++){varaaa=document.getElementById(n_pre+i.toString()).innerText; sm+=parseInt(aaa); } document.getElementById('sum').innerHTML='共计:'+sm+'元';}
这里所更改的商品数量,并没有被保存到数据库中,如果希望保存,那么单击“继续购物”按钮,则可以将商品数量更新到数据库中。删除商品(1)当对添加的商品不满意时,可以对商品进行删除操作。操作流程为:首先选中要删除的商品前面的复选框,如果全部删除,则可以单击“全选”按钮,或“反选”按钮;然后单击“删除选择”按钮,在弹出的警告框中单击“确定”按钮,商品将被全部删除。删除商品的页面效果如图6-17所示。所有的删除操作都是通过js脚本文件shopcar.js来实现,相关的函数包括alldel()函数、overdel()函数和del()函数。alldel()函数和overdel()函图6-17删除商品流程删除商品(2)数实现的原理比较简单,通过触发onclick事件来改变复选框的选中状态。函数代码如下://全部选择/取消functionalldel(form){ varleng=form.chk.length; if(leng==undefined){ if(!form.chk.checked) form.chk.checked=true; }else{for(vari=0;i<leng;i++) { if(!form.chk[i].checked)
删除商品(3)form.chk[i].checked=true; } } returnfalse;}//反选functionoverdel(form){ varleng=form.chk.length; if(leng==undefined){ if(!form.chk.checked) form.chk.checked=true; else
删除商品(4)form.chk.checked=false; }else{for(vari=0;i<leng;i++) { if(!form.chk[i].checked) form.chk[i].checked=true; else form.chk[i].checked=false;} } returnfalse;}删除商品(5)使用alldel()或overdel()选中复选框后,即可调用del()函数来实现删除功能。del()函数首先使用for循环,将被选中的复选框的value值取出并存成数组,然后根据数组生成url,并使用xmlhttp对象调用这个url,当处理完毕后,根据返回值弹出提示或刷新本页。在shopcar.js脚本文件中,del()函数代码如下:/*删除记录*/functiondel(form){ if(!window.confirm('是否要删除数据??')){
}else{ varleng=form.chk.length; if(leng==undefined){
删除商品(6)if(!form.chk.checked){ alert('请选取要删除数据!'); }else{rd=form.chk.value; varurl='delshop.php?rd='+rd; xmlhttp.open("GET",url,true); xmlhttp.onreadystatechange=delnow; xmlhttp.send(null); } }else{ varrd=newArray(); varj=0;
删除商品(7)for(vari=0;i<leng;i++) { if(form.chk[i].checked){ rd[j++]=form.chk[i].value; } } if(rd==''){ alert('请选取要删除数据!'); }else{varurl="delshop.php?rd="+rd; xmlhttp.open("GET",url,true); xmlhttp.onreadystatechange=delnow;
删除商品(8)xmlhttp.send(null); } } } returnfalse;}functiondelnow(){ if(xmlhttp.readyState==4){ if(xmlhttp.status==200){ varmsg=xmlhttp.responseText; if(msg!='1'){ alert('删除失败'+msg);
删除商品(9)}else{ alert('删除成功'); location=('?page=shopcar'); } } }}保存购物车(1)当用户希望保存商品更改后的商品数量时,可以单击“继续购物”按钮,将触发onclick事件调用conshop()函数保存数据,该函数有一个参数,就是当前表单的名称。在conshop()函数内,根据复选框和商品数量文本域,生成两个数组fst和snd,分别保存商品id和商品数量。这里要注意,两个数组的值是要相互对应的,如商品1的id保存到fst[1]中,那么商品1的数量就要保存到snd[1]中,然后根据这两个数组生成一个url,使用xmlhttprequest对象调用url,最后根据回传信息作出相应的判断。conshop()函数存储于js\shopcar.js文件中,其代码如下://更改商品数量functionconshop(form){ varn_pre='cnum'; varlang=form.chk.length; if(lang==undefined){保存购物车(2)varfst=form.chk.value; varsnd=um0.value; }else{ varfst=newArray(); varsnd=newArray(); for(vari=0;i<lang;i++){ varnm=n_pre+i.toString(); varstmp=document.getElementById(nm).value; if(stmp==''||isNaN(stmp)){ alert('不允许为空、必须为数字'); document.getElementById(nm).select(); returnfalse; }
保存购物车(3)snd[i]=stmp; varftmp=form.chk[i].value; fst[i]=ftmp; } }varurl='changecar.php?fst='+fst+'&snd='+snd; xmlhttp.open("GET",url,true); xmlhttp.onreadystatechange=updatecar; xmlhttp.send(null);}functionupdatecar(){ if(xmlhttp.readyState==4){
保存购物车(4)varmsg=xmlhttp.responseText; if(msg=='1'){ location='index.php'; }else{ alert('操作失败'+msg); } }}在conshop()函数中调用的changecar.php页为数据处理页,该页将商品id和商品数量进行重新排列,并保存到shopping字段内。changecar.php页面代码如下:<?phpsession_start();保存购物车(5)header("Content-type:text/html;charset=UTF-8");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作流程与效率优化制度
- 幼儿园学校管理制度
- 探究实验-鼠妇
- 人教部编版四年级语文上册《语文园地七》精美课件
- 【寒假阅读提升】四年级下册语文试题-非连续性文本阅读(四)-人教部编版(含答案解析)
- 东北育才中学2023-2024学年高三第十次考试数学试题
- 算法设计与分析 课件 9.3-概率算法 - 拉斯维加斯算法
- 2024年广西客运从业资格证app软件
- 2024年滨州客运从业资格证模拟考试练习题
- 2024年广元驾驶员货运从业资格证考试题
- 2024年区卫生健康系统公开招聘大学生村医考试题及答案
- 廉洁纪律十道题
- 高三英语 时政类语篇型填空专项训练
- 八年级生物上册 5.14.3《神奇的微生物》说课稿 (新版)苏教版
- 2024年度信息化教学校本研修实施方案
- 2024年湖南省长沙市中考历史试卷真题(含答案解析)
- 2024年中移建设限公司安徽分公司社会招聘12人高频难、易错点500题模拟试题附带答案详解
- 2024秋期国家开放大学《政治学原理》一平台在线形考(形考任务二)试题及答案
- 变配电运维知识考试题(含参考答案)
- 摩托车维修技术考核试卷
- 6 我的家庭贡献与责任(教学设计) 部编版道德与法治四年级上册
评论
0/150
提交评论