我们下面来介绍产品列表页面的的制作。
-- ----------------------------
-- ----------------------------
DROP TABLE IF EXISTS `zaho_product`;
CREATE TABLE `zaho_product` (
`p_id` int(11) NOT NULL AUTO_INCREMENT,
`p_name` varchar(128) NOT NULL COMMENT '名称',
`category_id` int(11) NOT NULL DEFAULT '0' COMMENT '分类ID',
`p_description` varchar(1024) DEFAULT '' COMMENT '描述',
`p_price` varchar(50) NOT NULL DEFAULT '' COMMENT '价格',
`p_thumb` varchar(128) DEFAULT '' COMMENT '缩略图',
`p_content` text,
`p_is_online` tinyint(4) NOT NULL DEFAULT '1' COMMENT '上架状态,取值于数据字典',
`p_is_index` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否首页显示',
`p_is_zhiding` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否置顶',
`p_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
PRIMARY KEY (`p_id`),
UNIQUE KEY `p_name` (`p_name`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='商品表';
大家需要根据每个字段的COMMNET来了解一下每个字段的含义,然后看类型知道怎么调用,最后还要关注一下默认值是否非为空,这在写入数据(即insert和update)时需要把握的。
注意:
1、这里的表名为“zaho_product”,但在ThinkPHP中我们统一定义了表前缀为“zaho_”,所以调用的时候直接写product就行了。
2、我们暂时不讲表的关联,如这里的category_id就是关联的分类表里面的cate_id字段,我们在列表页面中暂时不管它。我们只要将category_id作为一个输入参数来显示指定分类的产品列表。
二、Action
我们在IndexAction.class.php中,新建一个pppList函数来处理产品列表。
<?php
public function pppList(){
//构造查询条件
$category_id = I('category_id');
$where = array();
if(is_numeric($category_id)) $where['category_id'] = $category_id;
//查询并进行分页
import('ORG.Util.Page'); // 导入分页类
$m = M("product");
$count = $m->where($where)->count();
$Page = new Page($count,4); //这里可以修改分页的大小
$pagelist = $Page->show();
$list = $m->where($where)->order('p_id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
//赋值并显示模板
$this->assign('list',$list); //得到列表数据
$this->assign('page',$pagelist); //分页内容
$this->display();
}
?>
说明:
1、当列表页面被访问时,首先系统会找到pppList()这个方法,并运行它。
2、整个过程大概可以理解为,第一步获取参数并处理成条件数组(即$where);第二步引入分页类并代入条件进行查询,得到一个$list和$pagelist变量;第三步把$list和$pagelist变量传给模板文件,并显示模板文件。
三、模板文件
pppList.php的核心内容
<volist name="list" id="vo">
产品名:{$vo['p_name']}
价格:{$vo['p_price']}
<img src="{$vo['p_thumb']}" style="width:100px;" />
<br>
<a href="{:U('pppDetail', array('p_id'=>$vo['p_id']))}">查看详情</a>
<hr/>
</volist>
<div class="">
{$page}
</div>
说明:
1、使用volist循环,将我们传过来的$list数组(它是一个二维数组)显示出来
2、将分页的内容显示出来(即$page)。
3、列表页一般都有链接指向详情页,请注意”查看详情”,这个链接的href属性的写法。pppDetail为详情页的方法名(也是模板文件名)。
关于使用ThinkPHP来编写列表页,本文就介绍这么多,希望对大家有所帮助。