ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp のワイヤレス レベル分類
thinkphp ワイヤレス レベル分類
名前 ID 親 ID パス
ニュース 1 0 0
中国ニュース 2 1 0-1
河北ニュース 3 2 0-1-2
保定ニュース 0-1-2-3
米国ニュース 4 1 0-1
ニューヨーク ニュース 5 4 0-1-4
ウォールストリート ニュース 6 5 0-1-4-5
ロシア ニュース 7 1 0-1
データベースフィールド
mysql>ニュースから * を選択;
+----------+----------+------+----------+
| ニュース ID |
+----------+----------+------+----------+
| 0 |
| 2 | 中国ニュース 1 |
| 米国ニュース 1 |
| 河北ニュース 2 |
| 5 | ニューヨークニュース 3 |
| 6 | 0-1-2-4 |
+----------+----------+------+----------+
6 行セット (0.00 秒)
ワイヤレスレベルの思考でデータベースを表示
mysql>
から news_id,news_name,pid,path,concat(path,'-',news_id) を選択しますbpath によるニュースの順序;
+----------+----------+------+---------+---------- ----+
| ニュース ID パス |
+----------+----------+------+---------+---------- ----+
| 0-1 |
| 2 | 中国ニュース | 0-1-2 |
| 河北ニュース 2 | 0-1-2-4 |
| 6 | 0-1-2-4-6 || 米国ニュース 1 |
| ニューヨークニュース 3 | 0-1-3-5 |
+----------+----------+------+---------+---------- ----+
6 行セット (0.04 秒)
News_id 自動インクリメント
Pid: 現在の PID は、親 news_id、
です。
パス: 現在のパスは、親の news_id に接続された親のパスです
bPath: 現在の bpath は、現在の path フィールドに現在の news_id フィールドを加えたものです。これは、bpath を並べ替えてレベルごとの参照の効果を実現できるようにするための一時フィールドです。
concat() 関数のパラメータは文字列のリストであり、戻り結果はリンク パラメータによって生成された文字列です
TP フレームワーク内
カテゴリAction.class.php
class categoryAction extends Action{
テンプレート内の show.html
パブリック関数 shows(){
header('Content-Type:text/html;charset=utf8');
$model=D('ニュース');
$list=$model->field("news_id,news_name,pid,path,concat(path,'-',news_id) as bpath")->order('bpath')->select();/ /bPath フィールドは、path フィールドに news_id フィールドを加えたものです
//var_dump($list);
/*php の Foreach に、bpath フィールドに count サブセクションを追加します。ニュースは 2 つの数字 (0,1)、中国のニュースは 3 {0,1,2}、アメリカのニュースは 3 {0,1) です。 ,3}、河北ニュースは 4 つの数字 (0、1、2、4) です...したがって、bpath の数を計算するには - 水平バーを削除し、explode を使用して bpath の文字列を配列に分割し、計算する必要があります。数値の長さ、値は count フィールドの内容、インデントされた文字の数 */
foreach($list as $key=>$value){
//一度ループせずに count フィールドを追加します。値は配列の数を文字列
で割ったものです。
$list[$key]['count']=count(explode('-',$value['bpath']));//$list[$key]['count'] は一時的なカウント フィールドを追加します
}
$this->assign('list',$list);
$this->display();
}
パブリック関数 add(){
$model=D('ニュース');
$data=array(
'news_name'=>$_POST['uname'],
'pid'=>$_POST['pid'], // の値を取得するには、新しく追加された親 ID は、クリックされた現在のオプションの ID、つまり value="{$vo.news_id}" である必要があります。形式
?>