我们下面来介绍产品列表页面的的制作。

-- ----------------------------

-- ----------------------------

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来编写列表页,本文就介绍这么多,希望对大家有所帮助。

03-14 13:13