ホームページ >バックエンド開発 >PHPチュートリアル >メッセージと返信機能を実現するための ThinkPHP 無限分類原理の例、thinkphp example_PHP チュートリアル

メッセージと返信機能を実現するための ThinkPHP 無限分類原理の例、thinkphp example_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:15:381316ブラウズ

メッセージと返信関数を実装するための ThinkPHP 無限分類原理の例、thinkphp の例

この記事で説明する掲示板プログラムは、無制限の分類の原理を使用しており、無制限のメッセージと返信を実現できます。メッセージ リスト gclist は、メッセージと応答を明確に階層化するためにメッセージ階層スペースを保持します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

機能的には、このプログラムは無制限のレベルのメッセージと返信、つまりメッセージに返信したり、メッセージに返信したりすることを実現できます。もちろん、メッセージにのみ返信できるように制限することもできます。ポイントは、テンプレート コードの返信メッセージにある「このメッセージに返信する」を削除することです。パイヂュアンへようこそ!

プログラムの効果は下の図に示すとおりです:

ここをクリックして完全なソースコードをダウンロードしてください。

データシート:

コードをコピーします コードは次のとおりです:
--------------------------------- -
-- `wb_guestbook` のテーブル構造
---------------------------------
`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、
`ユーザー名` 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` テキストが NULL ではありません、
`verify` varchar(32) NOT NULL、
`isreply` tinyint(1) NOT NULL、
`ステータス` tinyint(1) NOT NULL、
主キー (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;

コード:

コードをコピーします コードは次のとおりです:
// +---------------------------------------------- -----------------------
// | Wブログ
// +---------------------------------------------- -----------------------
// |著作権 (c) 2008 http://www.w3note.com 無断複写・転載を禁じます。    
// +---------------------------------------------- -----------------------
// |著者: 网菠萝果
// +---------------------------------------------- -----------------------
// $Id$
/**
+------------------------------------------------ --------------------------------
* @class メッセージ ボード コントローラー GuestbookAction.class.php
+------------------------------------------------ --------------------------------
​*/
class GuestbookAction extends CommonAction {
    パブリック関数インデックス(){
        $garr= D('ゲストブック')->gclist("id,username,inputtime,pid,url,content,path,concat(path,'-',id) as bpath");    
                 
        $this->assign('Gklist', $garr['list']);    
        $this->assign('ページ',$garr['ページ']);    
        $this->display();    
    }
// +---------------------------------------------- -----------------------
// | 追加留言
// +---------------------------------------------- -----------------------
                 
    パブリック関数 add(){
        $this->adddata('ゲストブック');    
                         
        }
// +---------------------------------------------- -----------------------
// | 表の URL にネットワーク サイトを追加すると、ポイントは関連するネットワーク ステーションにジャンプする可能性があります
// +---------------------------------------------- -----------------------
         
    パブリック関数 tourl(){
      $this->gettourl('ゲストブック');    
      }
}
?>    
// +---------------------------------------------- -----------------------
// | Wブログ
// +---------------------------------------------- -----------------------
// | Copyright (c) 2008 http://www.w3note.com 無断複写・転載を禁じます。    
// |著者: 网菠萝果
// +---------------------------------------------- -----------------------
// $Id$
/**
+------------------------------------------------ --------------------------------
* @function メッセージ ボード モデル クラス GuestbookModel.class.php
+------------------------------------------------ --------------------------------
​*/
         
クラス GuestbookModel は RelationModel を拡張します{
// +---------------------------------------------- -----------------------
// | $_validate表单自動验证
// +---------------------------------------------- -----------------------
         
protected $_validate = array(
array ('email','require', 'メールアドレスを入力してください!'), array('email','email','メールの形式が間違っています!'),                                                                    ); // +---------------------------------------------- --- ----------------------------------
// | $_auto フォームの自動入力
// +---------------------------------------------- --- ----------------------------------
                                                                     protected $_auto=array(
array('ステータス','1'), array('inputtime','time',1,'function'), array('content','content',1,'callback'), array('url','geturl',1,'callback'), 配列 ('inputtime','time',1,'function')、 array('path','path',3,'callback'), array( 'username'、 'getusername'、3、 'callback')、array( 'username'、 'getusername'、3、 'callback')、 ); // +---------------------------------------------- --- ----------------------------------
// | getusername() はユーザー名をフィルターします
// +---------------------------------------------- --- -----------------------
パブリック関数 getusername(){
If (isset ($_POST['ユーザー名'])) {
if(trim($_POST['username'])=='ネットパイナップルフルーツ'){ return $data= ' ̄□ ̄'; } elseif(strlen($ _ post ['username'])> 10){ return $data= msubstr($_POST['username'],0,5);                                                                                                                return $data= $_POST['ユーザー名'];                                                                                                                                                                                                                              // +---------------------------------------------- --- ----------------------------------
// | path() はサブクラスのパスを返し、親クラスのパスの値は 0 です
// +---------------------------------------------- --- ----------------------------------
パブリック関数 path(){
           $pid=isset($_POST['pid'])?(int)$_POST['pid']:0;    
           $id=$_POST['id'];    
            if($pid==0){
                0を返します。    
            }
                     
            $fat=$this->where(array('id' =>$pid))->find();    
            $data=$fat['パス'].'-'.$fat['id'];              
            $data を返します。    
        }
// +---------------------------------------------- -----------------------
// | content()过滤留言内容
// +---------------------------------------------- -----------------------
    パブリック関数 content() {
        if (isset ($_POST['content']) && !empty ($_POST['content'])) {
             $data =deleteHtmlTags($_POST['content']);    
             $data =safeHtml($data);    
            if (strlen($data) > 1000) {
                $data = msubstr($data, 0, 500);    
            }
            $data を返します。    
          }
           }
 // +---------------------------------------------- -----------------------
// | content()过滤URL
// +---------------------------------------------- -----------------------
    パブリック関数 geturl(){
        if (isset ($_POST['url'])) {
        $data = deleteHtmlTags($_POST['url']);    
        $data =safeHtml($data);    
            $data=$data?$data:"" を返します。    
        }
    }
// +---------------------------------------------- -----------------------
// |gclist($field,$where='',$pagesize=30)留言列表
// +---------------------------------------------- -----------------------
// |$field,字段
// +---------------------------------------------- -----------------------
// |$where 条件、默认は空
// +---------------------------------------------- -----------------------
// |$pagesize分页记录、默认は30
// +---------------------------------------------- -----------------------
// |使用方法、上のコントロールを参照してください
// +---------------------------------------------- -----------------------
         
     パブリック関数 gclist($field,$where='',$pagesize=30) {
        import("ORG.Util.Page");    
         $count = $this->field('id')->where($where)->count();    
         $P = 新しいページ($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                     $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);    
        $arr を返します。    
    }
}
?>

ここで説明されている大企業の ThinkPHP フレームワーク プログラムの設計が役立つことを望んでいます。

php留言板は实现無制限回复功可

人が作成したデータベース テーブルを取得したら、1 つの ID を再取得してから、毎回その ID をテーブルに再書き込みしてください。


回复关联表:
回复コンテンツid 回复コンテンツid

这样就可实现無制限回复了!  



php+mysql三级分类、李文凯thinkphp無制限级分类

それで、何を聞きたいのですか?、、、私もこのビデオを見ました、とても良いです

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/904009.html技術記事 ThinkPHP の無限分類原理によるメッセージと返信機能の例 この記事で説明する thinkphp のメッセージ ボード プログラムの例は、無限分類原理を使用して、無限のメッセージと返信を実現できます。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。