ThinkPHP无限级分类原理实现留言与回复功能实例
《PHP实例:ThinkPHP无限级分类原理实现留言与回复功能实例》要点: PHP教程本文所述留言板程序使用了无限级分类的原理,可以实现无限级留言与回复.留言列表gclist保留了留言层次空格,使留言--回复层次分明.分享给大家供大家参考.具体分析如下: PHP教程功能上,本程序可以实现无限级留言与回复,即对留言回复,对回复的留言回复.当然你也可以作有限制的控制,使其只对留言回复,关键是在模板代码中去掉回复的留言中的“回复该留言”即可.欢迎去拍砖! PHP教程程序效果如下图所示: PHP教程 PHP教程完整源码点击此处本站下载. PHP教程数据表:
代码如下:
-- ----------------------------????
-- 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教程代码:
代码如下:
<?php????
// +----------------------------------------------------------------------???? // | WBlog???? // +----------------------------------------------------------------------???? // | Copyright (c) 2008? http://www.w3note.com 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?? http://www.w3note.com 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','callback'),???? ???????????????? array('url','geturl',???????????????????? ???????????????? array ('inputtime',???? ???????????????? array('path','path',3,????? ???????????????? array('username','getusername',????????????????????????? ?????????????????? );??????? // +----------------------------------------------------------------------???? // | getusername()过滤用户名???? // +----------------------------------------------------------------------???????????? ????? public function getusername(){???? ????????? if (isset ($_POST['username'])) {???? ??????????? if(trim($_POST['username'])=='网菠萝果'){???? ??????????????? return $data= ' ̄□ ̄';???????? ??????????? }elseif(strlen($_POST['username']) >10){????????????????? ??????????????? return $data= msubstr($_POST['username'],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,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,$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;???? ??? }???? }???? ?> PHP教程希望本文所述对大家的ThinkPHP框架程序设计有所帮助. 《PHP实例:ThinkPHP无限级分类原理实现留言与回复功能实例》是否对您有启发,欢迎查看更多与《PHP实例:ThinkPHP无限级分类原理实现留言与回复功能实例》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |