欧美三区四区_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教程
麻豆tv在线观看| 亚洲欧美中文日韩在线v日本| 欧洲成人免费aa| 日本熟妇人妻xxxxx| 懂色av蜜臀av粉嫩av喷吹| 天天影视综合| 亚洲成人午夜电影| 欧洲亚洲妇女av| mm131亚洲精品| 性猛交富婆╳xxx乱大交天津| 伊人久久成人| 日本乱码高清不卡字幕| 国产精品一二三视频| 奇米777在线视频| 天天干天天爱天天操| 日韩制服丝袜av| 91麻豆精品国产自产在线| 99视频在线播放| 亚洲最大成人网站| 精品国产鲁一鲁****| www.性欧美| 在线看国产精品| 久久久久久久久久久综合| 日产精品久久久久| 天天影视欧美综合在线观看| 舔着乳尖日韩一区| 成人h猎奇视频网站| 91视频在线免费| 欧美男男gaygay1069| zzijzzij亚洲日本少妇熟睡| 中文字幕亚洲专区| 国内精品视频一区二区三区| 91一区二区视频| 日韩精品亚洲一区| 亚洲精品动漫100p| 三年中国中文在线观看免费播放| 国产成人自拍视频在线| 91成人影院| 在线免费观看不卡av| 国产视频一区二区三区四区| 亚洲一二三在线观看| 九九久久精品| 午夜欧美2019年伦理| 91色中文字幕| 国产精品1区2区3区4区| 国产成人一区| 欧美日韩国产综合视频在线观看中文| 成人黄色短视频在线观看| 国产黄色网址在线观看| 91视频这里只有精品| 中文字幕av久久爽av| 精品一区二区三区在线| 激情av一区二区| 成人自拍爱视频| 天天鲁一鲁摸一摸爽一爽| 国产在视频线精品视频www666| 亚洲成人免费视| 成人在线免费观看一区| 日本一级特级毛片视频| 99久久亚洲精品| 欧美日韩一区二区电影| 亚洲精品美女久久7777777| 伦av综合一区| 久久成人免费| 亚洲欧洲日本专区| 99色精品视频| free欧美| 国产日韩欧美综合一区| 国产精品av电影| 国产精品国产三级国产专业不 | 黑人中文字幕一区二区三区| 久久久久久久久久久久久久久久久 | 亚洲国产视频网站| 国产91色在线|亚洲| 久久精品久久国产| 国产日韩视频| 亚洲乱码一区二区| 亚洲色图久久久| 国产精品国产亚洲精品| 亚洲综合自拍偷拍| 久久久久久九九| 黄色av一区二区| 久久99日本精品| 精品中文字幕乱| 深夜视频在线观看| 妖精一区二区三区精品视频| 色婷婷综合久久久中文字幕| 日韩欧美在线一区二区| 亚洲天堂网在线视频| 国产精品911| 午夜精品福利在线观看| 91av在线免费| 秋霞影院一区二区三区| 天天综合天天综合色| 久久精精品视频| av大全在线观看| 久久国产精品72免费观看| 最近2019中文字幕第三页视频| 老熟妇仑乱视频一区二区| 午夜无码国产理论在线| 国产精品女同互慰在线看| 国产精品入口夜色视频大尺度| 91成人精品一区二区| 91日韩视频| 欧美视频一区二| 亚洲一区二区三区免费看| 一级黄色片在线看| 国产大片一区二区| 国内成人精品视频| brazzers精品成人一区| 97精品中文字幕| 欧美性猛交xxxx黑人交| 91免费国产精品| 天天射天天色天天干| 久久久欧美精品sm网站| 国产精品爽爽爽| 免费中文字幕视频| 久久精品毛片| 另类少妇人与禽zozz0性伦| 日本黄色免费观看| 成人羞羞视频播放网站| 欧美一区二区三区视频免费 | 五月天综合网| 手机看片一区二区三区| 国产精品人成在线观看免费| 91情侣在线视频| 日本一区二区三区精品| 国产又黄又大久久| 97国产在线视频| 大胸美女被爆操| 亚洲青色在线| 欧美高清视频在线| 久久久久久久久久久久| 欧美日本二区| 亚洲视频在线观看视频| 91香蕉视频在线观看视频| 秋霞蜜臀av久久电影网免费| 欧美美女喷水视频| 一本大道熟女人妻中文字幕在线| 成人在线黄色| 岛国av一区二区三区| 一区二区三区四区久久| 欧美色网一区| 一个色在线综合| 日韩欧美国产二区| 日本国产在线观看| 亚洲摸摸操操av| 国产欧美一区二区在线播放| 中文字幕有码无码人妻av蜜桃| 成人一区二区三区视频| 成人国产在线视频| 天天干,天天干| 99精品久久只有精品| 91色p视频在线| 中文字幕在线播放不卡| 国产精品免费丝袜| 欧美三日本三级少妇三99| 国模私拍视频在线| 美女又爽又黄免费视频| 男人天堂1024| 欧美精品无码一区二区三区| 国产免费不卡av| 久久精品欧美日韩精品| av成人观看| 高清无码视频直接看| 国产精品100| 高清不卡一二三区| 91精品国产综合久久久久久蜜臀| 国产伦精品一区二区三区视频我| 99视频国产精品| 97人人模人人爽视频一区二区| 中文在线观看av| 中文字幕第一页久久| 久久99精品国产一区二区三区| 91精品国自产| 一区二区三区免费看视频| 亚洲精品中文字幕在线| 国产亚洲一区二区手机在线观看 | 久久久久99精品成人片| 中文字幕av一区二区三区佐山爱| 在线免费观看不卡av| 亚洲中文字幕久久精品无码喷水| 久久国产精品免费精品3p| 精品国产在天天线2019| 国产综合内射日韩久| 亚洲成人中文| 午夜精品一区二区三区在线| 国产成人亚洲欧洲在线| 久久无码av三级| 久久亚洲免费| 日韩午夜电影免费看| 欧美伦理视频网站| 久久婷婷中文字幕| 欧美暴力喷水在线| 欧美精品九九久久| av黄色在线看| 99精品视频在线免费观看| 亚洲精品免费在线看| 国产欧美88| 日韩欧美国产高清| 黄色激情在线观看| 久久三级福利| 国产日韩欧美日韩大片| 亚洲午夜激情视频| 婷婷国产v国产偷v亚洲高清| 免费av网址在线| 欧美丰满老妇| 欧美精品成人91久久久久久久| 日本特黄一级片| 日本一区二区三区国色天香| 日韩欧美激情一区二区| 超碰成人在线观看| 亚洲天堂第二页| 北条麻妃在线观看视频| 97久久超碰国产精品电影| 色一情一区二区三区四区| 日韩最新av| 亚洲大胆人体在线| 中文字幕在线观看2018| 99精品国产一区二区三区不卡| 日本高清久久一区二区三区| 亚洲无线观看| 一色桃子一区二区| 妺妺窝人体色www聚色窝仙踪| 久久噜噜亚洲综合| 精品91一区二区三区| 亚洲精华一区二区三区| 久久精品国产精品| 成人精品免费在线观看| 国产片一区二区三区| 激情伊人五月天| 夜间精品视频| 国产精品久久97| 天天操天天干天天插| 欧美一级理论性理论a| 亚洲区自拍偷拍| 久久日韩粉嫩一区二区三区| 麻豆传媒网站在线观看| 欧美一区二区三| 69久久夜色精品国产69| 国产男女裸体做爰爽爽| 91国产成人在线| 中文字幕人妻无码系列第三区| 老司机午夜精品| 久久久久欧美| 国内视频在线精品| 欧美成年人在线观看| 国产成人精品亚洲| 欧美成人激情| 成人午夜av| 久久激情电影| 欧美三级中文字| 国产麻豆xxxvideo实拍| 国产在线精品视频| 一区二区三区精品国产| 欧美日韩精品在线一区| 欧美怡红院视频一区二区三区| 国产美女永久免费| 欧美老人xxxx18| 1024在线看片| 亚洲国产91视频| 欧美日韩国产另类一区| 国产中年熟女高潮大集合| 91香蕉视频污| 欧美日韩亚洲第一| 国产日韩欧美| 韩国成人av| 理论片一区二区在线| 久久久久久久久久久91| av中文字幕免费| 亚洲成人在线网| 日本熟女一区二区| 五月婷婷另类国产| 亚洲观看黄色网| 94色蜜桃网一区二区三区| 在线视频91| 国内自拍视频一区二区三区| 亚洲在线免费观看| 国产成人av毛片| 久久久久久久网站| 日本精品一二区| 亚洲成人久久久久| 日韩av免费播放| 欧美视频中文一区二区三区在线观看 | 日韩成人av网址| 黄色片免费观看视频| 日本高清成人免费播放| 亚洲精品色午夜无码专区日韩| 99re在线视频这里只有精品| 九九九在线观看视频| 日韩成人免费电影| 亚洲欧洲精品一区二区三区波多野1战4| 久久亚洲在线| dy888夜精品国产专区| 哺乳一区二区三区中文视频| 欧美极品第一页| 蜜臀国产一区| 中文字幕久久亚洲| a网站在线观看| 日韩精品久久久久久久玫瑰园| 欧美日韩一级黄色片| 欧美在线不卡一区| 少妇高潮一区二区三区喷水| 亚洲影视资源网| 亚洲国产欧美视频| 国产精品入口麻豆九色| 日本中文字幕在线不卡| 国产日韩欧美不卡在线| 日韩 国产 一区| 91丨九色丨国产丨porny| 视色视频在线观看| 丁香五精品蜜臀久久久久99网站| 香蕉精品视频在线| 噜噜噜91成人网| 天天综合狠狠精品| 欧美日本三区| 欧美日韩一区二区视频在线 | www.久久久久| 欧美 日韩 国产 在线| 日韩在线国产精品| 特黄aaaaaaaaa真人毛片| 日日狠狠久久偷偷四色综合免费 | 日本成人超碰在线观看| 亚洲乱码国产乱码精品精| 亚洲成熟少妇视频在线观看| 欧美日韩国产电影| 在线免费观看毛片| 欧美色精品天天在线观看视频| 久草视频中文在线| 在线视频国内一区二区| 久久久久久欧美精品se一二三四| 亚洲成av人影院| 久久久久亚洲AV成人| 一本色道久久综合精品竹菊| 欧美日韩精品一区二区三区视频播放| 欧美午夜宅男影院在线观看| 亚洲天堂网av在线| 在线一区二区三区四区| 日韩综合在线观看| 精品国产污污免费网站入口 | 一区二区三区精密机械公司| 亚洲av片不卡无码久久| 亚洲人成小说网站色在线| 国产精品无码永久免费不卡| 一区二区三区欧美日韩| 色欲AV无码精品一区二区久久| 午夜av一区二区三区| 成年人午夜剧场| 日韩午夜三级在线| 夜夜狠狠擅视频| 亚洲最新av在线| 日本韩国欧美| 欧美在线免费看| jizz18欧美18| 91情侣在线视频| 欧美激情四色| 国产免费xxx| 狠狠色综合播放一区二区| 97xxxxx| 久久―日本道色综合久久| 亚洲男人在线天堂| 亚洲成精国产精品女| 国产香蕉在线视频| 欧美日韩一区二区欧美激情| 亚洲天堂aaa| 久久精品亚洲热| 国产午夜久久av| 91香蕉国产在线观看| 91蜜臀精品国产自偷在线| 亚洲小说欧美另类激情| 国产精品一区二区在线播放| 在线播放黄色av| 亚洲精品久久嫩草网站秘色| 日韩一级片av| 欧美亚洲国产一区在线观看网站| 中文字幕免费视频观看| 色妞久久福利网| 成人久久精品| 91丝袜脚交足在线播放| 一区二区中文| 国产妇女馒头高清泬20p多| 99久久免费视频.com| 黄色网址在线视频| 色婷婷激情综合| 日本高清不卡码| 啊v视频在线一区二区三区| 日韩欧美高清一区二区三区| 99国产在线观看| 亚洲深夜av| 久久久久免费精品| 亚洲欧洲国产专区| 青青草原免费观看| 亚洲激情在线视频| 日本欧美不卡| 成人动漫视频在线观看完整版| 1024精品一区二区三区| 男人天堂手机在线视频| 国产亚洲精久久久久久| 国产精品国产精品88| 亚洲精品福利在线观看|