• 技术文章 >php教程 >php手册

    ThinkPHP无限级分类原理实现留言与回复功能实例

    2016-06-06 20:18:49原创525

    这篇文章主要介绍了ThinkPHP无限级分类原理实现留言与回复功能实例,并附带有完整的项目源码下载供大家学习参考,非常具有实用价值,需要的朋友可以参考下

    本文所述留言板程序使用了无限级分类的原理,可以实现无限级留言与回复。留言列表gclist保留了留言层次空格,,使留言--回复层次分明。分享给大家供大家参考。具体分析如下:

    功能上,本程序可以实现无限级留言与回复,即对留言回复,对回复的留言回复。当然你也可以作有限制的控制,使其只对留言回复,关键是在模板代码中去掉回复的留言中的“回复该留言”即可。欢迎去拍砖!

    程序效果如下图所示:

    完整源码点击此处本站下载。

    数据表:

    复制代码 代码如下:

    -- ----------------------------
    -- Table structure for `wb_guestbook`
    -- ----------------------------
    DROP TABLE IF EXISTS `wb_guestbook`;
    CREATE TABLE `eway_guestbook` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `pid` int(10) NOT NULL,
    `email` varchar(50) NOT NULL,
    `path` varchar(100) NOT NULL,
    `username` varchar(30) NOT NULL,
    `updatetime` int(10) NOT NULL,
    `ip` varchar(15) NOT NULL,
    `url` varchar(200) NOT NULL,
    `inputtime` int(10) NOT NULL,
    `content` text NOT NULL,
    `verify` varchar(32) NOT NULL,
    `isreply` tinyint(1) NOT NULL,
    `status` tinyint(1) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;

    代码:

    复制代码 代码如下:

    <?php
    // +----------------------------------------------------------------------
    // | WBlog
    // +----------------------------------------------------------------------
    // | Copyright (c) 2008 All rights reserved.
    // +----------------------------------------------------------------------
    // | Author: 网菠萝果
    // +----------------------------------------------------------------------
    // $Id$
    /**
    +------------------------------------------------------------------------------
    * @class 留言板控制器GuestbookAction.class.php
    +------------------------------------------------------------------------------
    */
    class GuestbookAction extends CommonAction {
    public function index(){
    $garr= D('Guestbook')->gclist("id,username,inputtime,pid,url,content,path,concat(path,'-',id) as bpath");

    $this->assign('Gklist', $garr['list']);
    $this->assign('page',$garr['page']);
    $this->display();
    }
    // +----------------------------------------------------------------------
    // | 添加留言
    // +----------------------------------------------------------------------

    public function add(){
    $this->adddata('Guestbook');

    }
    // +----------------------------------------------------------------------
    // | 网址跳转。如在表单url添加网址的话,点击会跳转到相关网站
    // +----------------------------------------------------------------------

    public function tourl(){
    $this->gettourl('Guestbook');
    }
    }
    ?>
    <?php
    // +----------------------------------------------------------------------
    // | WBlog
    // +----------------------------------------------------------------------
    // | Copyright (c) 2008 All rights reserved.
    // | Author: 网菠萝果
    // +----------------------------------------------------------------------
    // $Id$
    /**
    +------------------------------------------------------------------------------
    * @function 留言板模型 类GuestbookModel.class.php
    +------------------------------------------------------------------------------
    */

    class GuestbookModel extends RelationModel{
    // +----------------------------------------------------------------------
    // | $_validate表单自动验证
    // +----------------------------------------------------------------------

    protected $_validate = array(
    array('email','require','请填写您的邮箱!'),
    array('email','email','邮箱格式错误!'),

    );
    // +----------------------------------------------------------------------
    // | $_auto表单自动填充
    // +----------------------------------------------------------------------

    protected $_auto=array(
    array('status','1'),
    array('inputtime','time',1,'function'),
    array('content','content',1,'callback'),
    array('url','geturl',1,'callback'),
    array ('inputtime','time',1,'function'),
    array('path','path',3,'callback'),
    array('username','getusername',3,'callback'),
    );
    // +----------------------------------------------------------------------
    // | getusername()过滤用户名
    // +----------------------------------------------------------------------
    public function getusername(){
    if (isset ($_POST['username'])) {
    if(trim($_POST['username'])=='网菠萝果'){
    return $data= ' ̄□ ̄';
    }elseif(strlen($_POST['username']) >10){
    return $data= msubstr($_POST['username'],0,5);
    }else{
    return $data= $_POST['username'];
    }
    }
    }
    // +----------------------------------------------------------------------
    // | path()返回子类的path,父类的path的值为0
    // +----------------------------------------------------------------------
    public function path(){
    $pid=isset($_POST['pid'])?(int)$_POST['pid']:0;
    $id=$_POST['id'];
    if($pid==0){
    return 0;
    }

    $fat=$this->where(array('id' => $pid))->find();
    $data=$fat['path'].'-'.$fat['id'];
    return $data;
    }
    // +----------------------------------------------------------------------
    // | content()过滤留言内容
    // +----------------------------------------------------------------------
    public function content() {
    if (isset ($_POST['content']) && !empty ($_POST['content'])) {
    $data =deleteHtmlTags($_POST['content']);
    $data =safeHtml($data);
    if (strlen($data) > 1000) {
    $data = msubstr($data, 0, 500);
    }
    return $data;
    }
    }
    // +----------------------------------------------------------------------
    // | content()过滤URL
    // +----------------------------------------------------------------------
    public function geturl(){
    if (isset ($_POST['url'])) {
    $data = deleteHtmlTags($_POST['url']);
    $data = safeHtml($data);
    return $data=$data?$data:"";
    }
    }
    // +----------------------------------------------------------------------
    // |gclist($field,$where='',$pagesize=30)留言列表
    // +----------------------------------------------------------------------
    // |$field,字段
    // +----------------------------------------------------------------------
    // |$where查询条件,默认为空
    // +----------------------------------------------------------------------
    // |$pagesize分页记录,默认为30
    // +----------------------------------------------------------------------
    // |使用方法,看上面的控制器调用
    // +----------------------------------------------------------------------

    public function gclist($field,$where='',$pagesize=30) {
    import("ORG.Util.Page");
    $count = $this->field('id')->where($where)->count();
    $P = new Page($count, $pagesize);

    $list=$this->field($field)->where($where)->order('bpath,id')->limit($P->firstRow . ',' . $P->listRows)->select();

    foreach ($list as $k => $v) {
    $list[$k]['count'] = count(explode('-', $v['bpath']));
    $list[$k]['tousername']=$this->where(array('id'=> $v['pid']))->getField('username');
    $str = '';
    if ($v['pid'] <> 0) {
    for ($i = 0; $i < $list[$k]['count'] * 2; $i++) {
    $str .= ' ';
    }
    $str .= ' ';
    }
    $list[$k]['space'] = $str;
    }
    $P->setConfig('header', '篇');
    $P->setConfig('prev', "«");
    $P->setConfig('next', '»');
    $P->setConfig('first', '|«');
    $P->setConfig('last', '»|');
    $page = $P->show();
    $arr=array('page'=>$page,'list'=>$list);
    return $arr;
    }
    }
    ?>

    希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Laravel 4 初级教程之Pages、表单验证 下一篇:smarty中js的调用方法示例
    PHP编程就业班

    相关文章推荐

    • 让PHP支持页面回退的两种方法[转]• 第十四节 命名空间 [14]• Windows下搭建PHP开发环境• 动态网页技术PHP程序字符串处理函数• PHP应用分页显示制作详细讲解

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网