【PHP】 【PHP100改进系列】无限分类的设计、实施与美化

最近模仿php100视频的新闻系统,其中有个新闻分类,视频中提到了无限分类,但是不知道为什么没有实施,可能是为了代码简化吧。通过研究,我自己设计了这个类!先看效果图:
【PHP】 【PHP100改进系列】无限分类的设计、实施与美化
是以树的形式做的,看起来还不错吧!
下面数据库的设计,同表外键引用以实现单表无限分类:
【PHP】 【PHP100改进系列】无限分类的设计、实施与美化
下面是经过改良后但不完美的代码:

代码
   
     
// 无限分类:首次初始

function classViewFirst ( $table ) {
$imgUp = " <img src='../admin/images/1.png' height='15' width='15' /> " ;
$imgCenter = " <img src='../admin/images/2.png' height='15' width='15' /> " ;
$imgSkin = " <img src='../admin/images/3.png' height='15' width='15' /> " ;
$imgFile = " <img src='../admin/images/file.png' height='15' width='15' /> " ;

$query = $this -> query( " select * from $table where f_id=0 " );
$num = mysql_num_rows ( $query );
$count = 0 ;

while ( $row2 = mysql_fetch_array ( $query ))
{
$count += 1 ;

if ( $count == $num )
{
echo $imgUp . $imgFile . " <span id= $row3 [id]> " . $row2 [name] . " </span><br> " ;
}
else
{
echo $imgCenter . $imgFile . " <span id= $row3 [id]> " . $row2 [name] . " </span><br> " ;
}


$this -> classView( $row2 [id] , $imgSkin . " &nbsp;&nbsp;&nbsp; " );
}
}


// 递归无限
function classView ( $fid , $strClass ) {

$imgUp = " <img src='../admin/images/1.png' height='15' width='15' /> " ;
$imgCenter = " <img src='../admin/images/2.png' height='15' width='15' /> " ;
$imgSkin = " <img src='../admin/images/3.png' height='15' width='15' /> " ;
$imgFile = " <img src='../admin/images/file.png' height='15' width='15' /> " ;
// $strClass.=$imgSkin."&nbsp;&nbsp;&nbsp;";

$query2 = $this -> query( " select * from p_newsclass where f_id= $fid " );
$num = mysql_num_rows ( $query2 );
$count = 0 ;


while ( $row3 = mysql_fetch_array ( $query2 ))
{
$count += 1 ;

if ( $count == $num )
{
echo $strClass . $imgUp . $imgFile . " <span id= $row3 [id]> " . $row3 [name] . " </span><br> " ;
$this -> classView( $row3 [id] , $strClass . " &nbsp;&nbsp;&nbsp; " );
}
else
{
echo $strClass . $imgCenter . $imgFile . " <span id= $row3 [id]> " . $row3 [name] . " </span><br> " ;
$this -> classView( $row3 [id] , $strClass . $imgSkin . " &nbsp;&nbsp;&nbsp; " );
}


}

}

// 完成

刚开始是这样的:
【PHP】 【PHP100改进系列】无限分类的设计、实施与美化
后来通过不同情况下生成占位字符串的处理,终于把那个竖线干掉了。
虽然不是特别好(左右查询的处理方法可以提高效率),但介于学习PHP而不是数据库算法的需求,勉强勉强啦,比ASP的执行效率要高。

 

你可能感兴趣的:(PHP)