24.9 商品显示模块

24.9 商品显示模块

视频讲解:光盘TMlx24商品显示模块.exe

24.9.1 商品展示模块概述

本系统为用户提供了不同的商品展示方式,包括推荐商品、最新商品、热门商品等,能够使消费者有目的地选购商品。每个展示方式中包括商品的详细信息显示,为用户购买商品提供可靠的依据。本系统商品显示模块的运行结果如图24.21所示。

图24.21 商品展示模块页面

因为推荐商品、最新商品和热门商品的实现方法和过程基本相同,所以本节只讲解推荐商品模块。其他功能相关代码可参见光盘中的源程序。

24.9.2 商品展示模块技术分析

商品显示功能实现的关键就是如何从数据库中读取商品信息,如何完成数据的分页显示。在定义SQL语句时,首先判断字段isnom的值,如果该字段为1,即为推荐,否则为不推荐,然后在定义数据降幂排列,并设置每页显示4条记录,这就是完成商品显示的查询语句,其代码如下:

【例24.27】代码位置:光盘TMsl24newhot.php

<?php header("Content-type: text/html; charset=UTF-8"); //设置文件编码格式 include_once("system/system.inc.php"); //包含类的实例化文件 $newsql = "select id, name, pics, m_price, v_price from tb_commo where isnew = 1 order by id desc limit 4"; //定义SQL语句 $hotsql = "select id, name, pics, m_price, v_price from tb_commo order by sell, id desc limit 4"; $sql = "select id, name, pics, m_price, v_price from tb_commo where isnom = 1 order by id desc limit 4"; $newarr=$admindb->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,那么循环一次后,数组的指针将向下移动两位,依此类推。

24.9.3 商品展示模块的实现过程

在技术分析中已经对商品显示所使用的技术、方法进行概述,下面介绍一下具体的过程。

(1)创建newhot.php文件,从数据库中读取推荐商品的数据,并将数据存储到模板变量中,其代码可以参考技术分析。

(2)创建newhot.tpl模板页,应用section语句输出商品信息,并添加相应的操作按钮或链接。模板页中一共有3个事件:显示更多商品、查看商品和放入购物车。

当单击“更多商品”超链接时,将会重新加载本页面,并传递一个page变量。switch语句会根据page值来显示。

当单击“查看详情”按钮时,将触发onclick事件,并将调用openshowcommo()函数,同时,商品id会作为函数的唯一参数被传递进去。

当单击“购买”按钮时,同样会触发onclick事件,并调用buycommo()函数,唯一的参数也是商品的id。

商品模板页面的代码如下:

【例24.28】代码位置:光盘TMsl24systemtemplatesnewhot.tpl

<link rel="stylesheet" href="css/newhot.css" /> <link href="css/top.css" rel="stylesheet" type="text/css" /> <link href="css/nominate.css" rel="stylesheet" type="text/css" /> <link href="css/links.css" rel="stylesheet" type="text/css" /> <script language="javascript" src="js/createxmlhttp.js"></script> <script language="Javascript" src="js/showcommo.js"></script> <table width="643" border="0" cellpadding="0" cellspacing="0" style=" border: 3px solid #f0f0f0; " > <tr> <td width="321" height="33" align="center" background="images/shop_07.gif"><div class="new"><a href="? page=nom" class="top"><img src="images/more.JPG" width="39" height="18" border="0" /></a></div> </td> <td width="322" height="33" align="right" background="images/shop_14.gif"><div class="hot"><a href="? page=hot" class="top"><img src="images/more.JPG" width="39" height="18" border="0" /></a></div> &nbsp; &nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td align="center" valign="top" style="border-right: 1px solid #f0f0f0; "><table width="295" height="307" align="center" border="0" cellpadding="0" cellspacing="0"> <tr>{counter start=1 skip=1 direction=up print=false assign=count} {section name=new_id loop=$newarr} <td align="left" valign="top"><table width="150" height="150" align="left" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="100" align="center" valign="middle"><a style="cursor:hand; " onclick=""><img src="{$newarr[new_id].pics}" width="100" height="80" style="border:1px solid #f0f0f0; " onclick="openshowcommo({$newarr[new_id].id})" /></a></td> </tr> <tr> <td height="17" align="center" valign="middle">{$newarr[new_id].name}</td> </tr> <tr> <td height="17" align="center" valign="middle">市场价:{$newarr[new_id].m_price}&nbsp; 元</td> </tr> <tr> <td height="16" align="center" valign="middle">会员价:{$newarr[new_id].v_price}&nbsp; 元</td> </tr> </table></td> {counter} {if $count mod 2 ! = 0} </tr> <tr> {/if} {/section} </tr> </table></td> <td align="center" valign="top" style="border-left: 1px solid #f0f0f0; "><table width="295" height="307" align="center" border="0" cellpadding="0" cellspacing="0"> <tr> {counter start=1 skip=1 direction=up print=false assign=counts}{section name=hot_id loop=$hotarr} <td align="left" valign="top"><table width="150" height="150" align="left" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="100" align="center" valign="middle"><a style="cursor:hand; " onclick=""><img src="{$hotarr[hot_id].pics}" width="100" height="80" style="border:1px solid #f0f0f0; " onclick="openshowcommo({$hotarr[hot_id].id})" /></a></td> </tr> <tr> <td height="17" align="center" valign="middle">{$hotarr[hot_id].name}</td> </tr> <tr> <td height="17" align="center" valign="middle">市场价:{$hotarr[hot_id].m_price}</td> </tr> <tr> <td height="16" align="center" valign="middle">会员价:{$hotarr[hot_id].v_price}</td> </tr> </table></td> {counter} {if $counts mod 2 ! = 0}</tr> <tr> {/if} {/section} </tr> </table></td> </tr> </table> <table width="643" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="6" width="636" height="33" align="right" valign="middle"><img src="images/shop_10.gif" width="643" height="33" border="0" usemap="#Map" /></td> <td rowspan="3" width="7" height="238">&nbsp; </td> </tr> <tr> <td width="23" height="185">&nbsp; </td> {section name=nom_id loop=$nomarr} <td width="145" height="185" align="left" valign="top"> <table width="145" border="0" cellpadding="0" cellspacing="0" > <tr> <td height="100" align="center" valign="middle"><img src="{$nomarr[nom_id].pics}" width="100" height="80" style="border: 1px solid #f0f0f0; " ></td> </tr> <tr> <td height="17" align="center" valign="middle">&nbsp; {$nomarr[nom_id].name}</td> </tr> <tr> <td height="17" align="center" valign="middle">市场价:{$nomarr[nom_id].m_price} &nbsp;元</td> </tr> <tr> <td height="19" align="center" valign="middle">会员价:{$nomarr[nom_id].v_price}&nbsp; 元</td> </tr> <tr> <td height="32" align="center" valign="middle"><input id="showinfo" name="showinfo" type="button" value="" class="showinfo" onclick="openshowcommo({$nomarr[nom_id].id})"/>&nbsp; <input id="buy" name="buy" type="button" value="" class="buy" onclick="return buycommo({$nomarr[nom_id].id})" /></td> </tr> </table> </td> {/section} <td width="33" height="185">&nbsp; </td> </tr> <tr> <td colspan="6" width="636" height="14">&nbsp; </td> </tr> </table> <map name="Map" id="Map"> <area shape="rect" coords="585,8,635,27" href="? page=new" class="lk" /> </map>

(3)创建showcommo.js脚本文件。当单击“查看商品”按钮时,系统会弹出一个新的页面,并显示商品的详细信息;当单击“购买”按钮时,该商品将会被放到当前用户的购物车中,如果没有登录用户或商品已添加,则会提示错误信息。JS脚本文件的代码如下:

【例24.29】代码位置:光盘TMsl24jsshowcommo.js

/* 查看商品信息函数,将打开一个新页面 */ function openshowcommo(key){ open('showcommo.php? id='+key, '_blank', 'width=560 height=300', false); } /* 将购买商品添加到购物车中,将在24.10节中讲解 */ function buycommo(key){ … }

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

24.9 商品显示模块