PHP 無限分類三種方式 非函數的遞迴調用!

來源:互聯網
上載者:User

php無限分類大致有三種方式,

  1、資料庫通過設定父類ID來進行唯一索引,然後使用函數的遞迴調用實現無限分類;

  2、資料庫設計通過特定格式進行排列,然後使用mysql查詢關鍵函數:concat。程式實現比較簡單;

  3、第三種不是太瞭解, 好像要使用到演算法和資料結構進行排列。

今天我主要分享下第二種方式,一開始也是找了很多資料,確實比較難理解。不過最終還是給搞明白了,因此記下隨筆,希望通過這篇文章能夠協助到大家。

一、資料庫設計:  

複製代碼 代碼如下:--
-- Table structure for table `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catpath` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `catpath`, `name`) VALUES
(1, '0', '網站首頁'),
(2, '0-1', 'Linux OS'),
(3, '0-1', 'Apache伺服器'),
(4, '0-1', 'MySQL資料庫'),
(5, '0-1', 'PHP指令碼語言'),
(6, '0-1-2', 'Linux 系統教程'),
(7, '0-1-2', 'Linux 網路技術'),
(8, '0-1-2', 'Linux 安全基礎'),
(9, '0-1-2-7', 'Linux LAMP'),
(10, '0-1-3-10', 'apache Server');

這裡說明下,catpath的-連結符號不是固定的,可以選擇,;等特殊符號。
二、 PHP代碼實現:
複製代碼 代碼如下:$conn = mysql_connect ( 'localhost', 'root', '' );
mysql_select_db ( 'test', $conn );
mysql_query ( 'set names UTF8' );
$sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath";
$query = mysql_query ( $sql );
while ( $row = mysql_fetch_array ( $query ) ) {
/**
* 第一種展示方法
*/
/*$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
echo $space . $row ['name'] . '<br>';*/
/**
* 第二種展示方法
*/
$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
$option .= '<option value="' . $row ['id'] . '">' . $space . $row ['name'] . '</option>';
}
echo '<select name="opt">' . $option . '</select>';

上:

    

這裡有幾個關鍵的地方需要注意下:
 1、在資料庫查詢欄位是用了concat函數,不瞭解的地方可以google下。
 2、第二個地方主要是用到了php中的str_repeat巧妙的設定了空格。
有錯誤之處,望mail: chenghuiyong1987@gmail.com或者留言

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.