PHP開發(fā)分類技術(shù)之使用遞歸實現(xiàn)無限級分類(一)
首先,我們需要創(chuàng)建一個簡單的數(shù)據(jù)庫test
<?php $link = mysqli_connect('localhost','username','password','test'); mysqli_set_charset($link, "utf8"); if (!$link) { die("連接失敗:".mysqli_connect_error()); } ?>
創(chuàng)建新的表class,設(shè)置3個字段?
排序id ? ?int型。
分類名稱title ? ??varchar型。
分類pid ? int型。
類似如下的表:
思路:
定義一個自定義函數(shù)get_str ,設(shè)置父類pid = 0, 使用SQL語句查詢出它的子類,把查詢出來的子類放置到$result中
使用while循環(huán)出子類,通過構(gòu)建字符串做成輸出的樣式,調(diào)用自定義函數(shù)get_str,將子類的id傳入自定義函數(shù)中,
然后繼續(xù)查詢下一級。
<?php function get_str($id = 0) { global $str; global $link; //global 關(guān)鍵詞用于訪問函數(shù)內(nèi)的全局變量。 $sql = "select id,title from class where pid= $id"; $result = mysqli_query($link,$sql);//查詢pid的子類的分類 if($result){//如果有子類 $str .= '<ul>'; while ($row = mysqli_fetch_array($result)) { //循環(huán)記錄集 $str .= "<li>" . $row['id'] . "--" . $row['title'] . "</li>"; //構(gòu)建字符串 get_str($row['id']); //調(diào)用get_str(),將記錄集中的id參數(shù)傳入函數(shù)中,繼續(xù)查詢下級 } $str .= '</ul>'; } return $str; } echo get_str(0); ?>
輸出類似: