- function my_scandir($dir)
- {
- $files = array();
- if ( $handle = opendir($dir) ) {
- while ( ($file = readdir($handle)) !== false ) {
- if ( $file != “..” && $file != “.” ) {
- if ( is_dir($dir . “/” . $file) ) {
- $files[$file] = scandir($dir . “/” . $file);
- }else {
- $files[] = $file;
- }
- }
- }
- closedir($handle);
- return $files;
- }
- }
14.简述论坛中无限分类的实现原理。
答:
/* - 数据表结构如下:
- CREATE TABLE `category` (
- `categoryID` smallint(5) unsigned NOT NULL auto_increment,
- `categoryParentID` smallint(5) unsigned NOT NULL default ’0′,
- `categoryName` varchar(50) NOT NULL default ”,
- PRIMARY KEY (`categoryID`)
- ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES - (0, ‘一级类别’),
- (1, ‘二级类别’),
- (1, ‘二级类别’),
- (1, ‘二级类别’),
- (2, ‘三级类别’),
- (2, ’333332′),
- (2, ’234234′),
- (3, ‘aqqqqqd’),
- (4, ‘哈哈’),
- (5, ’66333666′);
*/ //指定分类id变量$category_id,然后返回该分类的所有子类 - //$default_category为默认的选中的分类
- function Get_Category($category_id = 0,$level = 0, $default_category = 0)
- {
- global $DB;
- $sql = “SELECT * FROM category ORDER BY categoryID DESC”;
- $result = $DB->query( $sql );
- while ($rows = $DB->fetch_array($result))
- {
- $category_array[$rows[categoryParentID]][$rows[categoryID]] = array(‘id’ => $rows[categoryID], ‘parent’ => $rows[categoryParentID], ‘name’ => $rows
[categoryName]); - }
- if (!isset($category_array[$category_id]))
- {
- return “”;
- }
- foreach($category_array[$category_id] AS $key => $category)
- {
- if ($category['id'] == $default_category)
- {
- echo “
class cate - {
function Get_Category($category_id = 0,$level = 0, $default_category = 0) - {
- echo $category_id;
- $arr = array(
- ’0′ => array(
- ’1′ => array(‘id’ => 1, ‘parent’ => 0, ‘name’ => ’1111′),
- ’2′ => array(‘id’ => 2, ‘parent’ => 0, ‘name’ => ’2222′),
- ’4′ => array(‘id’ => 4, ‘parent’ => 0, ‘name’ => ’4444′)
- ),
- ’1′ => array(
- ’3′ => array(‘id’ => 3, ‘parent’ => 1, ‘name’ => ’333333′),
- ’5′ => array(‘id’ => 5, ‘parent’ => 1, ‘name’ => ’555555′)
- ),
’3′ => array( - ’6′ => array(‘id’ => 6, ‘parent’ => 3, ‘name’ => ’66666′),
- ’7′ => array(‘id’ => 7, ‘parent’ => 3, ‘name’ => ’77777′)
- ),
- ’4′ => array(
- ’8′ => array(‘id’ => 8, ‘parent’ => 4, ‘name’ => ’8888′),
- ’9′ => array(‘id’ => 9, ‘parent’ => 4, ‘name’ => ’9999′)
- )
- );
if (!isset($arr[$category_id])) - {
- return “”;
- }
foreach($arr[$category_id] AS $key => $cate) - {
- if ($cate['id'] == $default_category)
- {
- $txt = “}else{
- $txt = “}
if ($level > 0) - {
- $txt1 = “>” . str_repeat( “-”, $level ) . ” ” . $cate['name'] . “\n”;
- }else{
- $txt1 = “>” . $cate['name'] . “\n”;
- }
- $val = $txt.$txt1;
- echo $val;
- self::Get_Category($key, $level + 1, $default_category);
- }
- }
function getFlush($category_id = 0,$level = 0, $default_category = 0) - {
- ob_start();
- self::Get_Category($category_id ,$level, $default_category);
- $out = ob_get_contents();
- ob_end_clean();
- return $out;
- }
- }
- $id =$_GET['id'];
- echo “”;
- $c = new cate();
- //$c->Get_Category();
- $ttt= $c->getFlush($id,’0′,’3′);
- echo $ttt;
- echo “”;
- ?>
|