ホームページ  >  記事  >  バックエンド開発  >  thinkphp のワイヤレス レベル分類

thinkphp のワイヤレス レベル分類

WBOY
WBOYオリジナル
2016-06-13 12:35:10836ブラウズ

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{
パブリック関数 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}" である必要があります。形式


?>

テンプレート内の show.html







声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。