• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
王小白 博客
web编程...点点滴滴! 我是一只小菜鸟,但是可以飞的很高!
博客园    首页    新随笔    联系   管理    订阅  订阅
【PHP】 【PHP100改进系列】无限分类的设计、实施与美化

最近模仿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而不是数据库算法的需求,勉强勉强啦,比ASP的执行效率要高。

 

posted on 2010-11-06 16:31  王小白  阅读(944)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3