亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 263
粉絲 3
評(píng)論 2
訪問量 134000
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP無限分類
福哥的博客
原創(chuàng)
1416人瀏覽過

什么是PHP無限分類?就像windows下新建一個(gè)文件夾,在新建的文件夾下又可以新建一個(gè)文件夾,這樣無限循環(huán)下去,無限分類也是這樣,父類可以分出它子類,子類又可以分出它的子類,這樣一直無限循環(huán)下去,假設(shè)有這樣的一個(gè)三級(jí)分類,新聞→PHP新聞→PHP7出來了。如果我們要查找“PHP7出來了”這條新聞,我們先點(diǎn)擊新聞,然后再點(diǎn)擊PHP新聞就可以查出來了,也就是說我們可以通過祖父類一級(jí)一級(jí)地往下找,反過來我們只要知道一個(gè)子類的父類,就可以把它查找出來了。這樣我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫時(shí)就可以多設(shè)計(jì)一個(gè)父類id的字段就可以實(shí)現(xiàn)PHP無限分類的功能了。

無限級(jí)分類原理簡(jiǎn)介

無限分類看似"高大上",實(shí)際上原理是非常簡(jiǎn)單的 。無限分類不僅僅需要代碼的巧妙性,也要依托數(shù)據(jù)庫設(shè)計(jì)的合理性。要滿足無限級(jí)分類,數(shù)據(jù)庫需要有兩個(gè)必須的字段,id,pid。id用來標(biāo)識(shí)自身,而pid則是用來表明父級(jí)id。也就是說,每個(gè)分類記錄不僅描述了自身,還描述了與其關(guān)心最為緊密的另一個(gè)id??此茝?fù)雜的事情被這樣一個(gè)小技巧解決了。

所需PHP文件

conn.php    數(shù)據(jù)庫配置文件

deep.php    遞歸無限極分類文件

deep2.php   導(dǎo)航link式文件

建立數(shù)據(jù)庫表


分類表:命名為deepcate

1480556176269506.png

數(shù)據(jù)庫準(zhǔn)備: 

建表deepcate:

CREATE TABLE IF NOT EXISTS `deepcate` (
`id` int(4) NOT NULL,
`pid` int(11) NOT NULL,
`catename` varchar(30) NOT NULL,
`cateorder` int(11) unsigned NOT NULL DEFAULT '0',
`createtime` int(10) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='分類表';

導(dǎo)入***數(shù)據(jù):

INSERT INTO `deepcate` (`id`, `pid`, `catename`, `cateorder`, `createtime`) VALUES
(1, 0, '新聞', 0, 0),
(2, 0, '圖***', 0, 0),
(3, 1, '國內(nèi)新聞', 0, 0),
(4, 1, '國際新聞', 0, 0),
(5, 3, '北京新聞', 0, 0),
(6, 4, '美國新聞', 0, 0),
(7, 2, '美女圖***', 0, 0),
(8, 2, '風(fēng)景圖***', 0, 0),
(9, 7, '歐美明星', 0, 0),
(10, 9, '英國***', 0, 0);

配置連接文件

新建文件conn.php

<?php
 $db_host='localhost';
 $db_user='root';
 $db_password = '';
 $db_name = '';
 $link=@mysqli_connect($db_host,$db_user,$db_password)or die(mysql_error());
 mysqli_select_db($link,$db_name)or die(mysqli_error());
 mysqli_query("$link,set names utf8")or die('編碼設(shè)置錯(cuò)誤');
?>

實(shí)現(xiàn)原理圖

123.png

下拉列表樣式


<?php
include ("conn.php");
//首先定義一個(gè)函數(shù),pid作為父類ID,定義為0
function getList($pid=0,&$result=array(),$space=0){//遞歸在***作是需要返回?cái)?shù)組,我們使用引用的方法,對(duì)代碼進(jìn)行更改
 $space=$space+2;
 $sql="SELECT*FROM deepcate WHERE pid = $pid";//使用sql語句,查詢pid選面的子類。
 $res = mysql_query($sql);//把結(jié)果放入數(shù)組中,然后返回到result中。
 while ($row = mysql_fetch_assoc($res)){
 $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename'];//對(duì)分類的樣式進(jìn)行美化
 $result[]=$row;
 getList($row['id'],$result,$space);//遞歸是函數(shù)自身調(diào)用自身的技巧,我們?cè)诓樵冏宇?nbsp;的 時(shí)候需要調(diào)用到getList($row['id']);
 }//子類的ID要作為下一級(jí)的ID所以要在后面帶入$row['id'])
 return $result;
}
$rs=getList();
function displayCate($pid=0,$selected=1){
 $rs=getList($pid);
 $str='';
 $str.="<select name='cate'>";
 foreach ($rs as $key=>$val){
 $selectedstr='';
 if ($val['id'] == $selected){
 $selectedstr="selected";
 }
 $str.="<option{$selectedstr}>{$val['catename']}</option>";
 }
 return $str.='</select>';
}
echo displayCate(0,2);
?>

要點(diǎn):

  1. 遞歸實(shí)現(xiàn)無限級(jí)分類是用利用遞歸方式,找出父節(jié)點(diǎn),生成一個(gè)家譜樹。

  2. 子類與父類。

1477708200951766.png

導(dǎo)航LINK樣式

<?php
include('conn.php');
function getCatePath($cid, &$result = array()) {
/*同下拉樣式相同,創(chuàng)建getCatePath函數(shù),執(zhí)行sql語句查詢id,并把取得的付給$rs.
使用mysql_fetch_assoc來獲取數(shù)組,調(diào)用自身getCatePath把pid和自身的id進(jìn)行查詢。*/
 $sql = "SELECT * FROM deepcate WHERE id=$cid";
 $rs = mysql_query($sql);
 $row = mysql_fetch_assoc($rs);
 if ($row) {
 $result[] = $row;
 getCatePath($row['pid'], $result);
 }
 krsort($result); //返回$result,使用逆向的方式對(duì)數(shù)組進(jìn)行排序。
 return $result;
}
function displayCatePath($cid,$url='cate.php?cid=') {
 $res = getCatePath($cid);
 $str = '';
 foreach ($res as $key => $val) {
 $str.= "<a href={$url}{$val['id']}>{$val['catename']}</a>>";
 }
 return $str;
}
echo displayCatePath(10);
?>

要點(diǎn):

1.link樣式是從父節(jié)點(diǎn)開始,向下尋找其子孫節(jié)點(diǎn),而形成的一個(gè)樹狀圖形,link樣式判斷的是當(dāng)前節(jié)點(diǎn)的pid與上一個(gè)節(jié)點(diǎn)的id相等.

本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)