亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

php+mysql實現無限級分類

2024-04-25 20:43:12
字體:
來源:轉載
供稿:網友

目思路分析:一個PHP項目要用到分類,但不確定分幾級,所以就想做成無限級分類。

一開始想是按以前一樣,數據庫建4個值,如下:

id: 自增 | pid: 父類ID | xid: 排序ID | classname: 分類名稱

后來想到這種在讀取數據時和修改時比較不方便,而且在產品讀取時尤其不便,于時改成了以下的方案:

在Mysql的表中新增了一個字段,現數據庫如下:

表名 w_faqclass: id: 自增 | pid: 父類ID | xid: 排序ID | classname: 分類名稱 | rank: 等級

定義:

一級分類,pid 為 0 ,rank 為"/"

二級分類,pid 為 一級分類的id,rank 為"/一級分類的id/"

三級分類,pid 為 二級分類的id,rank 為"/一級分類的id/二級分類的id/"

依此類推...

1. 基礎函數

/*

利于遞歸返回已經進行了排序的無限級分類的數組

不想用遞歸的話也可以用 like 來獲取后再進行排序,我比較懶,就不寫那種獲取方式了,其實用 like 更好,推薦用那種方式

$datatable : 數據表名

$startid : 開始父類ID

$wheretColumns :父類列名

$xColumns : 排序列名

$xtype : 排序方式

$returnArr : 返回數組

*/

function ReadClass($datatable,$startid,$xtype,$returnArr){

$db = $datatable;

$sid = $startid;

$xtype = $xtype;

$lu = $returnArr;

$sql = "select * from `".$db."` where `pid`='".$sid."' order by xid ".$xtype.";";

$cresult= mysql_query($sql);

if(mysql_num_rows($cresult)>0){

while($rs = mysql_fetch_array($cresult)){

$lunum = count($lu);

$lu[$lunum]['id'] = $rs['id'];

$lu[$lunum]['pid'] = $rs['pid'];

$lu[$lunum]['rank'] = $rs['rank'];

$lu[$lunum]['classname']= $rs['classname'];

$lu[$lunum]['xid'] = $rs['xid'];

$lu = ReadClass($db,$rs['id'],$xtype,$lu);

}

}

return $lu;

}

/*

查詢某表中的某個值,只會返回一個值

$datatable : 數據表名

$wherevalue : 條件值

$selectColumns : 查詢列名

$whereColumns : 條件列

*/

function SelectValue($datatable,$wherevalue,$selectColumns,$whereColumns){

$sql = "select `".$selectColumns."` from `".$datatable."` where `".$whereColumns."`='".$wherevalue."';";

$result = mysql_query($sql);

while($rs = mysql_fetch_array($result)){

return $rs[$selectColumns];

}

}

2. 增加分類 (直接做到了select中用于選擇 )

<?php

$classArr = ReadClass('w_faqclass','0','asc',array());

$canum = count($classArr);

echo "<select name='pid'>";

echo "<option value='0'>主分類</option>";

for($i=0; $i<$canum; $i++){

$rankArr = split("/",$classArr[$i]['rank']);

$ranknum = count($rankArr);

$t = "";

for($j=1; $j<$ranknum; $j++){ //用于格式化顯示子類

$t .= "├┄┄";

}

echo "<option value='".$classArr[$i]['id']."'>".$t.$classArr[$i]['classname']."</option>";

}

echo "</select>"

?>

//保存時的操作,需要判斷是否為主分類,當為主類時, rank 值設為 /

//查詢父類的 rank 值,用父類的 rank 加上 父類的 id 值

if($pid != 0){

$pidrank = SelectValue('w_faqclass',$pid,'rank','id');

$rank = $pidrank.$pid."/";

}else{

$rank = "/";

}

3. 修改分類

<?php

/*

注意,因為是修改,在此頁面加載時已將當前分類的所有值讀出來了,對應是:$pid,$rank

*/

$classArr = ReadClass('w_faqclass','0','asc',array());

$canum = count($classArr);

echo "<select name='pid'>";

echo "<option value='0'>主分類</option>";

for($i=0; $i<$canum; $i++){

// 因為是修改,所以當前分類不能選擇自身或自身以下的分類,多加個 rank 值的優勢啊,哈哈,以前做單pid值的時候這里還得用次遞歸查詢

while($ids == $classArr[$i]['id'] || strstr($classArr[$i]['rank'],$rank.$ids."/")){

$i++;

}

$rankArr = split("/",$classArr[$i]['rank']);

$ranknum = count($rankArr);

$t = "";

for($j=1; $j<$ranknum; $j++){

$t .= "├┄┄";

}

if($pid == $classArr[$i]['id']){

$selected = "selected";

}else{

$selected = "";

}

echo "<option value='".$classArr[$i]['id']."' ".$selected.">".$t.$classArr[$i]['classname']."</option>";

}

echo "</select>"

?>

// 保存時的操作

// 要做到改動時該分類的所有子分類rank值都需要變動,選取得原來子分類通用到的 rank 值,也就是該分類的 rank值加上它的ID值

// 利于 mysql 的REPLACE語句進行替換

if($pid != 0){

$pidrank = SelectValue('w_faqclass',$pid,'rank','id');

$rank = $pidrank.$pid."/";

}else{

$rank = "/";

}

$orank = SelectValue('w_faqclass',$ids,'rank','id').$ids."/";

$nrank = $rank.$ids."/";

mysql_query("UPDATE `w_faqclass` SET rank = REPLACE(rank,'".$orank."','".$nrank."');");

mysql_query("UPDATE `w_faqclass` SET `classname`='".$classname."',`xid`='".$xid."',`pid`='".$pid."',`rank`='".$rank."' where `id`='".$ids."';");

4. 刪除和查詢就簡單了,這個就不贅述了,提到一點,記得在刪除前確認下該類下面是否存在子類就可以了。

$zid = SelectValue('w_faqclass',$ids,'id','pid');

if($zid>0){

...

以上就是php+mysql實現無限極分類的方法,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人久久一区| 欧美大尺度电影在线观看| 欧美日韩国产中文字幕| 欧美黑人性猛交| 九九热这里只有在线精品视| 久久久精品久久久久| 91精品国产自产在线| 美女久久久久久久久久久| 国产精品r级在线| 欧美一区在线直播| 深夜精品寂寞黄网站在线观看| 亚洲欧美中文在线视频| 91国产美女视频| 欧美一乱一性一交一视频| 欧美精品手机在线| 欧美精品激情blacked18| 亚洲欧美变态国产另类| 91精品国产综合久久香蕉最新版| 欧美高清在线视频观看不卡| 精品久久久久久久久久久久久| 亚洲少妇激情视频| 成人字幕网zmw| 欧美日韩亚洲系列| 日韩视频第一页| 亚洲999一在线观看www| 亚洲一区二区三区香蕉| 国产欧美精品一区二区三区介绍| 国产第一区电影| 国精产品一区一区三区有限在线| 国产成人aa精品一区在线播放| 91青草视频久久| 日韩欧美中文第一页| 久久69精品久久久久久久电影好| 国产日韩欧美综合| 国产日韩av在线| 91系列在线观看| 久久久国产影院| 日韩欧美有码在线| 久久久久成人精品| 久久免费视频在线观看| 中文欧美在线视频| 国产精品白丝av嫩草影院| 久久久人成影片一区二区三区| 亚洲欧美在线一区二区| 亚洲色图国产精品| 一本一道久久a久久精品逆3p| 岛国av在线不卡| 免费97视频在线精品国自产拍| 精品色蜜蜜精品视频在线观看| 中文字幕亚洲欧美日韩2019| 丰满岳妇乱一区二区三区| 亚洲无av在线中文字幕| 亚洲精品资源在线| 欧美影院久久久| 日韩毛片中文字幕| 久久这里只有精品99| 国产精品丝袜视频| 日韩av在线免费观看| 亚洲欧洲黄色网| 欧美美女18p| 精品视频在线观看日韩| 中文国产成人精品久久一| 亚洲视频一区二区| 亚洲欧美中文字幕在线一区| 国产精品久久久久久久久久ktv| 97色在线观看免费视频| www.亚洲一区| 日韩成人av一区| 日韩精品久久久久| 日本成人精品在线| 国产一区二区三区在线观看视频| 欧美精品videossex88| 欧美性高潮床叫视频| 国产精品jizz在线观看麻豆| 最近中文字幕mv在线一区二区三区四区| 欧美久久精品一级黑人c片| 国产视频在线一区二区| 国产精品福利久久久| 日韩一中文字幕| 国内精品久久久久伊人av| 欧美日韩免费观看中文| 精品国产视频在线| 欧美日韩激情视频8区| 伊人精品在线观看| 国产91精品不卡视频| 中文字幕精品视频| 欧美老女人性视频| 日本电影亚洲天堂| 九九热r在线视频精品| 这里只有精品视频在线| 国产一区欧美二区三区| 日韩在线免费高清视频| 一本一道久久a久久精品逆3p| 欧美日韩国产色| 亚洲va欧美va国产综合剧情| 亚洲精品视频在线观看视频| 美日韩精品免费视频| 久久亚洲精品中文字幕冲田杏梨| 欧美福利在线观看| 久久91亚洲精品中文字幕奶水| 国产精品日本精品| 欧美性少妇18aaaa视频| 国产精品视频白浆免费视频| 欧美国产视频日韩| 欧美精品在线第一页| 亚洲视频专区在线| 亚洲天堂男人的天堂| 国产欧美一区二区三区在线看| 高清亚洲成在人网站天堂| 一本色道久久88精品综合| 2019亚洲男人天堂| 国产一区红桃视频| 在线亚洲午夜片av大片| 日韩在线中文视频| 久久精品视频在线| 久久天天躁狠狠躁夜夜av| 欧美成人中文字幕在线| 日韩在线一区二区三区免费视频| 亚洲人免费视频| 91日本在线观看| 久久亚洲精品视频| 在线观看国产成人av片| 亚洲精品美女免费| 欧美专区日韩视频| 日韩电影第一页| 最近2019中文字幕第三页视频| 性金发美女69hd大尺寸| 精品在线观看国产| 欧美丰满片xxx777| 亚洲另类欧美自拍| 自拍偷拍亚洲精品| 亚洲国产精品推荐| 91精品在线看| 久久久久久18| 午夜精品久久久99热福利| 久久福利网址导航| 色妞色视频一区二区三区四区| 精品动漫一区二区三区| 日韩精品视频在线观看网址| 91国内揄拍国内精品对白| 国产精品美女免费| 国产suv精品一区二区| 中文字幕av一区二区三区谷原希美| 亚洲黄色免费三级| 欧美日韩亚洲成人| 久久久久日韩精品久久久男男| 久久琪琪电影院| 国产精品高清在线| 国产精品免费久久久久影院| 日韩av在线一区二区| 91在线视频免费| 精品毛片三在线观看| 欧美日韩国产成人高清视频| 色综合影院在线| 亚洲福利小视频| 亚洲在线www| 成人妇女淫片aaaa视频| 国产精品视频免费观看www| 日韩免费观看在线观看| 欧美日韩xxxxx| 欧美一区二区三区免费视| 国产精品美女主播在线观看纯欲| 色综合导航网站| 国产精品都在这里|