欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

php+mysql實現無限分類實例詳解_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:php截取html字符串及自動補全html標簽的方法
這篇文章主要介紹了php截取html字符串及自動補全html標簽的方法,是php對html操作非常實用的技巧,具有一定參考借鑒價值,需要的朋友可以參考下 本文實例講述了php截取html字符串及自動補全html標簽的方法。分享給大家供大家參考。具體分析如下: 這里總結一下關于利用php

 這篇文章主要介紹了php+mysql實現無限分類的方法,實例分析了mysql數據庫設計、數據庫操作及無限極分類的具體實現步驟,非常具有實用價值,需要的朋友可以參考下

   

本文實例講述了php+mysql實現無限分類的方法。分享給大家供大家參考。具體分析如下:

1、數據庫通過設置父類ID來進行唯一索引,然后使用函數的遞歸調用實現無限分類;

2、數據庫設計通過特定格式進行排列,然后使用mysql查詢關鍵函數:concat,程序實現比較簡單,首先我們假設有這樣的一個三級分類,新聞→PHP新聞→PHP6.0出來了.

如果我們要查找“PHP6.0出來了”這條新聞,我們先點擊新聞,然后再點擊PHP新聞,就可以查出來了,也就是說我們可以通過祖父類一級一級地往下找,反過來我們只要知道一個子類的父類,就可以把它查找出來了,這樣我們在設計數據庫時就可以多設計一個父類id的字段就可以實現無限分類的功能了.

數據庫代碼如下:

這里我們建一個表"class"

代碼如下: CREATE TABLE `class` (
`id` int(11) NOT NULL auto_increment COMMENT '分類id',
`f_id` int(11) NOT NULL COMMENT '父id',
`name` varchar(25) collate gbk_bin NOT NULL COMMENT '分類名稱',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk COLLATE=gbk_bin AUTO_INCREMENT=1 ;
首先我們往數據庫里插入'新聞'這個大分類,因為'新聞'是最大分類,上面沒有父類了,所以我把它的f_id設置為0.
代碼如下: INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(1, 0, '新聞');//id這個字段是自動增長的,可以不寫值.

 

然后我們再往數據庫里插入'PHP新聞'這個分類,它的父類'新聞'的id是1,所以它的f_id設置為1。

代碼如下: INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(2, 1, 'PHP新聞');

 

然后我們再往數據庫里插入'PHP6.0出來了'這個分類,它的父類'PHP新聞'的id是2,所以它的f_id設置為2。

代碼如下: INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(3, 2, 'PHP6.0出來了');

 

同理,我們可以這樣一直往下插入分類,也就達到了無限分類.

我們可以發現插入一個分類的原則關鍵是找到這個分類的父類的id,然后作為這個分類的f_id字段的值.

假設要插入跟'新聞'同一個級別的分類'技術',也就是說它也是最大分類,上面沒有父類了,那么它的f_id也設置為0;

復制代碼 代碼如下: INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(4, 0, '技術');

 

在'技術'下面又有一個分類'PHP技術',那么我們怎么插入呢,首先找到'PHP技術'的父類'技術'的id,然后作為自己的f_id字段的值.

代碼如下: INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(5, 4, 'PHP技術');

 

看到這里,想必大家應該都明白怎么往數據庫里插入各個分類了,就不再舉例了,我們已經知道如何往數據庫里插入各個分類了,那又如何把各個分類羅列出來呢?

代碼如下:

<?php
header("Content-type:text/html;charset=utf-8");
$db=new mysqli("localhost","root","","news_php100") ; //實例化一個數據庫連接。使用這個前一定要確保已經加載了mysqli類庫,或者用mysql_connect這個方式連接。
if(mysqli_connect_errno()){
echo "鏈接失敗:".mysqli_connect_error();
exit(); }
$db->query("set names utf8");
$result=$db->query("select name from class where f_id=0"); //查找f_id=0的分類,也就是查找每一個大類。
while($row=$result->fetch_assoc()){
echo $row['name']."<br>"; //這樣就把每個大類循環出來了。
}
//同樣我們可以把新聞的子類循環出來。
$result=$db->query("select * from class where f_id=1"); //查找f_id=1的分類,也就是查找'新聞'的子類。
while($row=$result->fetch_assoc()){
echo $row['name']."
"; //這樣就把'新聞'的子類循環出來了。注意:只是子類,不包括孫子類。
}
//寫到這里,我們會發現一個問題,如果這個分類是10級分類,難道我們要寫10個循環把它每個子類循環出來?如果是更多級分類呢,這樣寫顯然是不現實的。
//那又有什么辦法解決呢?我們可以寫一個遞歸的函數,把f_id作為參數傳入,不斷循環每一個f_id的值,也就是說把每一個f_id值的子類循環出來。
//首先我們把各個分類的值保存在一個二維數組中,在下面的遞歸函數里有用。
$result=$db->query("select * from class");
while($row=$result->fetch_assoc()){
$arr[]=array($row[id],$row[f_id],$row[name]); //每一行保存一個分類的id,f_id,name的信息。
}
function fenlei($f_id=0){ //$f_id初始化為0,也就是從最大分類開始循環.
global $arr; //聲明$arr為全局變量才可在函數里引用。
for($i=0;$i<count($arr);$i++){ //對每個分類進行循環。
if($arr[$i][1]==$f_id){ //$arr[$i][1]表示第$i+1個分類的f_id的值。開始$f_id=0,也就是把f_id=0的分類輸出來。
echo $arr[$i][2]."<br>"; //$arr[$i][1]表示第$i+1個分類的name的值。
fenlei($arr[$i][0]); //$arr[$i][1]表示第$i+1個分類的id的值。進行遞歸,也就是把自己的id作為f_id參數把自己的子類再循環出來。
}
}
}
?>
三個字段id,parentid,name,算法也很簡單遞歸,以前用遞歸的時候很傻,應該說極傻,因為在遞歸中通過查詢數據表來獲得子類的所有,最近開竅了,想到了一個地球人都能想得到的方法,下面是代碼,一個class,代碼如下:
復制代碼 代碼如下: <?php
class Tree {

/**
* 從數據庫查詢出的所有分類信息
* @var array
*/
var $arr;
/**
* 如下格式
* var $arr = array(
1 => array('id'=>'1','parentid'=>0,'name'=>'一級欄目一'),
2 => array('id'=>'2','parentid'=>0,'name'=>'一級欄目二'),
3 => array('id'=>'3','parentid'=>1,'name'=>'二級欄目一'),
);*/

/**
* 輸出結構
* @var array
*/
var $tree = array();
/**
* 樹形遞歸的深度
* @var int
*/
var $deep = 1;

/**
* 生成樹形的修飾符號
* @var array
*/
var $icon = array('│','├','└');
/**
* 生成指定id的下級樹形結構
* @param int $rootid 要獲取樹形結構的id
* @param string $add 遞歸中使用的前綴
* @param bool $parent_end 標識上級分類是否是最后一個
*/
function getTree($rootid = 0,$add = ”,$parent_end =true){
$is_top = 1;
$child_arr = $this->getChild($rootid);
if(is_array($child_arr)){
$cnt = count($child_arr);
foreach($child_arr as $key => $child){
$cid = $child['id'];
$child_child = $this->getChild($cid);
if($this->deep >1){
if($is_top == 1 && $this->deep > 1){
$space = $this->icon[1];
if(!$parent_end)
$add .= $this->icon[0];
else $add .= ' ';
}

if($is_top == $cnt){
$space = $this->icon[2];
$parent_end = true;
}else {
$space = $this->icon[1];
$parent_end = false;
}
}
$this->tree[] = array('spacer'=>$add.$k.$space,
'name'=>$child['name'],
'id'=>$cid
);
$is_top++;

$this->deep++;
if($this->getChild($cid))
$this->getTree($cid,$add,$parent_end);
$this->deep–;
}
}
return $this->tree;
}

/**
* 獲取下級分類數組
* @param int $root
*/
function getChild($root = 0){

$a = $child = array();
foreach($this->arr as $id=>$a){
if($a['parentid'] == $root){
$child[$a['id']] = $a;
}
}
return $child?$child:false;
}
/**
* 設置源數組
* @param $arr
*/
function setArr($arr = array()){
$this->arr = $arr;
}
}
?>
通過一次查詢把結構保存進一個數組,再數組進行遞歸運算,無疑極大的提高了程序運行效率,使用代碼很簡單.

 

希望本文所述對大家的php程序設計有所幫助。

分享:php在linux下檢測mysql同步狀態的方法
這篇文章主要介紹了php在linux下檢測mysql同步狀態的方法,是Linux下使用php檢測mysql同步狀態的實用技巧,具有一定參考借鑒價值,需要的朋友可以參考下 本文實例講述了php在linux下檢測mysql同步狀態的方法。分享給大家供大家參考。具體分析如下: 這里通過兩個實例來介

來源:模板無憂//所屬分類:PHP教程/更新時間:2015-03-24
相關PHP教程
色狠狠桃花综合| 欧美三级视频| 久久美女艺术照精彩视频福利播放| 亚洲国产精品视频在线观看 | 91精品视频在线| 午夜影院免费版| 天天干天天摸天天操| 日本亚洲一区二区| 91精品国产综合久久久蜜臀图片| 国产二区一区| 国产精品20p| 中文字幕视频精品一区二区三区| 99精品国产一区二区三区不卡| 亚洲视频在线观看| 精品嫩模一区二区三区| 亚洲 欧美 日韩 综合| 97视频热人人精品免费| 午夜精品免费在线| 国产日韩欧美在线看| 中文字幕天堂网| 色狠狠一区二区三区| 99re热视频精品| 夜夜躁日日躁狠狠久久88av| 又大又硬又爽免费视频| 中文字幕人妻丝袜乱一区三区| 一区在线播放| 91超碰这里只有精品国产| 久久精品magnetxturnbtih| 情侣偷拍对白清晰饥渴难耐| 精品中文字幕一区二区三区av| 亚洲精品午夜久久久| 国产精品露脸av在线| 91传媒理伦片在线观看| 亚洲最大的免费视频网站| 91视频在线观看免费| 欧美成人激情图片网| 午夜dv内射一区二区| 人妻丰满熟妇av无码区hd| 韩国成人在线视频| 中文字幕亚洲欧美日韩2019| 欧美啪啪免费视频| www.xxxx国产| 国产一区二区三区av电影| 国产一区二区三区丝袜| 黄色免费视频大全| 色欲av永久无码精品无码蜜桃 | 91亚洲午夜精品久久久久久| 久久久精品久久| 日本在线观看免费视频| 欧美片第一页| 91一区二区在线| 2019中文字幕免费视频| jjzz黄色片| 91麻豆精品国产91久久久久推荐资源| 国产精品久久久久aaaa樱花| 国产精品99久久久久久久久久久久| 色婷婷免费视频| 老司机aⅴ在线精品导航| 亚洲综合色自拍一区| 亚洲va久久久噜噜噜| 久久嫩草捆绑紧缚| 欧美r级电影| 欧美三级电影在线看| 日韩免费电影一区二区| 日本成人一级片| 免费亚洲电影在线| 中文字幕亚洲专区| 日韩av.com| 综合久久av| 亚洲色图都市小说| 91九色露脸| 豆国产97在线 | 亚洲| 99国产精品| 日韩成人xxxx| 午夜视频你懂的| 四虎精品永久免费| 亚洲免费观看视频| 国产精品果冻传媒潘| 日韩毛片在线视频| 亚洲欧美bt| 色小说视频一区| 在线a免费观看| av综合网址| 欧美性猛xxx| 色吧亚洲视频| 性中国古装videossex| 99精品久久99久久久久| 国产99久久精品一区二区永久免费| 成人黄色a级片| 中文无码久久精品| 日韩成人在线视频观看| 91香蕉视频污版| 久久精品九色| 欧美午夜精品久久久久久人妖| 日韩欧美99| 成人黄色在线观看视频| 久久综合成人精品亚洲另类欧美 | 欧美毛片免费观看| 欧美中文字幕不卡| 乱子伦一区二区| 午夜激情在线视频| 亚洲欧美一区二区三区极速播放 | 国产精品白浆一区二小说| 日韩国产精品久久久久久亚洲| 日韩在线中文字| 日本一区二区在线免费观看| 日韩高清欧美| 亚洲国产精彩中文乱码av在线播放| 激情五月亚洲色图| 91久久精品无嫩草影院| 91成人在线精品| 国产成人在线小视频| 视频一区在线免费看| 亚洲永久精品国产| 亚洲欧美久久234| 五月婷婷六月激情| 亚洲欧美色一区| 日韩免费电影一区二区| 欧美一级免费片| 亚洲天堂2014| 天堂一区二区三区| 亚洲色欧美另类| 一区二区三区中文字幕电影| 青娱乐一区二区| 日韩中文字幕免费在线观看| 国产精品成人一区二区艾草| 欧美高清视频一区| 女人18毛片水真多18精品| 国产精品国产三级国产普通话蜜臀| 久久精品国产理论片免费| 国产丰满果冻videossex| 中文字幕不卡在线| 久久婷婷人人澡人人喊人人爽| 精品国产伦一区二区三| 国产精品欧美久久久久无广告 | 欧美久久一二区| 麻豆传传媒久久久爱| 四虎影视精品| 亚洲国产精品专区久久| 黑人巨大猛交丰满少妇| 亚洲精品一区二区在线看| 中文字幕国产日韩| 欧美成人国产精品一区二区| 在线免费观看成人网| 欧美日韩在线免费播放| 97品白浆高清久久久久久| 欧美日韩国产123区| 欧美日韩怡红院| 免费精品国产| 亚洲欧美色图片| 一卡二卡三卡四卡| 欧美一级一区| 欧美中文字幕视频| 天天综合网入口| 9l国产精品久久久久麻豆| 国产精品三区在线| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 日韩精品免费在线观看| 黑人玩弄人妻一区二区三区| 午夜久久福利| 欧美精品久久久久| 日本a在线观看| 91麻豆高清视频| 欧美亚州在线观看| 制服诱惑亚洲| 欧美色图天堂网| 浓精h攵女乱爱av| 99国产精品一区二区| 日韩中文在线中文网三级| 又嫩又硬又黄又爽的视频| 国产中文字幕精品| 99久久99| 午夜福利视频一区二区| 色综合久久66| 奇米影视四色在线| 综合天堂久久久久久久| 欧美国产第二页| 四虎精品永久在线| 久久久激情视频| 午夜啪啪免费视频| 91精品尤物| 亚洲视频一区二区| 国产一二三区精品| 99国产欧美另类久久久精品| 欧美裸体网站| 精品国产亚洲一区二区三区大结局| 日韩一级二级三级| 黄色性生活一级片| 奇米一区二区三区av| 亚洲精品日产aⅴ| 巨茎人妖videos另类| 欧美另类一区二区三区| 国产人妻精品午夜福利免费| 久久成人一区| 91在线视频免费| 亚洲欧洲精品视频| 欧美精品aⅴ在线视频| 99riav国产精品视频| 日本在线不卡视频| 亚洲伊人久久综合| 日韩视频网站在线观看| 91精品国产色综合久久ai换脸| 精品少妇人妻av一区二区三区| 日本欧美大码aⅴ在线播放| 999国产视频| 欧美成人app| 亚洲福利在线观看| 一本在线免费视频| 91原创在线视频| www.黄色网址.com| 狠狠做六月爱婷婷综合aⅴ| 欧美成人在线影院| 免费看av在线| 精品国产成人av| 三级黄色片播放| 奇米影视在线99精品| 蜜桃精品久久久久久久免费影院 | 136fldh精品导航福利| 一卡二卡三卡在线| 色婷婷久久久综合中文字幕| 91精品人妻一区二区三区蜜桃2| 麻豆国产精品视频| 欧美激情www| 97视频一区| 久久成人精品视频| 一级黄色片视频| 欧美伊人精品成人久久综合97| 手机在线看片日韩| 成人免费三级在线| 看一级黄色录像| 99热国内精品| 国产噜噜噜噜噜久久久久久久久| 亚洲aⅴ在线观看| 欧美精品一区二区三区高清aⅴ | 国产精品xxx在线观看| 久久精品最新地址| 伊人免费在线观看| 欧美探花视频资源| 国产精品天天干| 国产亚洲一区二区三区四区| 高清在线观看免费| 国产亚洲亚洲| 精品欧美一区二区精品久久| 99精品国产高清一区二区麻豆| 蜜月aⅴ免费一区二区三区| 依依成人在线视频| 欧美日韩在线播放| a级黄色免费视频| 国产精品美女视频| 亚洲欧美aaa| 激情成人综合网| 中文字幕久精品免| 中文无码久久精品| 电影午夜精品一区二区三区| 亚洲国产视频二区| 欧美激情国产精品| 懂色av成人一区二区三区| 亚洲精品在线观| 久久午夜免费视频| 都市激情亚洲色图| 一级片手机在线观看| 国产视频一区在线观看 | 波多野结衣影院| 91网页版在线| 天天影视综合色| 精品影视av免费| 大桥未久一区二区| 国产精品s色| 精品国产乱码久久久久久久软件 | 久久久久一区二区三区四区| 欧美亚洲日本在线观看| 麻豆精品视频在线观看| 97超碰人人爱| 日韩一级精品| 日韩欧美一区二区视频在线播放 | 9l视频白拍9色9l视频| 久久av中文字幕片| 激情成人开心网| 国产一区二区你懂的| 日韩成人av电影在线| 我不卡影院28| 精品国产一区二区三区四区vr| 久久99性xxx老妇胖精品| 国产日韩在线看片| 成人中文字幕视频| 日本精品va在线观看| 日韩av电影资源网| 欧美成人精品一区二区| 少妇高潮一区二区三区99小说| 亚洲日本欧美中文幕| 国产色综合视频| 日韩成人中文电影| 国产精品久久久久久久一区二区| 亚洲精品一区二区三区四区高清| 加勒比在线一区| 日韩欧美一区在线观看| 天堂а√在线中文在线新版| 欧美日韩国产一级片| 国产午夜精品一区二区理论影院 | 午夜精品福利一区二区| 自由日本语亚洲人高潮| 免费h精品视频在线播放| 欧美wwwww| 麻豆精品传媒视频| 亚洲色图88| 欧美日韩国产高清视频| 欧美午夜国产| 午夜精品福利一区二区| 亚洲国产婷婷| 国产精品h视频| 久久99伊人| 免费cad大片在线观看| 日韩电影在线观看电影| www插插插无码视频网站| 精品在线观看免费| 日韩免费高清在线| 不卡一区二区三区四区| 老司机午夜性大片| 久久久久亚洲蜜桃| 超碰caoprom| 一区二区三区 在线观看视频| 久久久久久久久久久久| 五月婷婷综合在线| 欧美精品成人久久| 在线播放91灌醉迷j高跟美女| 波多野结衣 久久| 亚洲成av人乱码色午夜| 99热这里只有精品在线观看| 伊人精品在线观看| 日韩性xxx| 45www国产精品网站| 久久男人av| 91嫩草在线| 牛牛国产精品| 一区二区免费在线观看| 美女国产一区二区| 北条麻妃视频在线| 久久伊99综合婷婷久久伊| www.555国产精品免费| 亚洲综合久久av| 久久r这里只有精品| 91精品一区二区三区久久久久久 | 成人午夜淫片100集| 亚洲激情中文字幕| 日本韩国免费观看| 国内精品小视频| 老司机成人在线| 久久大片网站| 久久中文字幕一区二区三区| 日本精品免费在线观看| 久久这里只有精品6| 欧美日韩高清丝袜| 91久久精品一区二区二区| 激情网站在线观看| 中文字幕成人精品久久不卡| 欧美啪啪网站| 成人午夜激情网| 国精品一区二区| 隔壁人妻偷人bd中字| 成人美女在线观看| av网页在线观看| 在线免费视频一区二区| 中文字幕人妻一区二区三区视频| 在线日韩第一页| 在线观看欧美| av一区二区三区四区电影| 在线欧美视频| 久久精品免费一区二区| 国产女人18水真多18精品一级做| 99自拍偷拍视频| 日韩三级在线观看| 天堂在线视频免费观看| 国产精品video| 亚洲欧美日韩高清在线| 成人污网站在线观看| 成人av网址在线观看| 国内精品久久99人妻无码| 在线免费观看成人短视频| 正在播放亚洲精品| 九九视频这里只有精品| 欧洲亚洲一区二区三区| 先锋影音欧美| 国产a区久久久| 中日韩精品一区二区三区| 欧美色图在线观看| 亚洲精品免费在线观看视频| 日韩免费在线观看视频| 亚洲a在线视频| 免费看一级大黄情大片| 国产精品视频免费| 久久精品99国产精| 亚洲欧美日韩在线一区| 欧美国产中文高清| 另类欧美小说| 国产精品综合一区二区三区| 国产熟女高潮一区二区三区| 欧美三级资源在线| 深爱激情五月婷婷| 91久久久久久久久久| 亚洲一区不卡|