对于一个导航栏设计的思考。
ustb 2003-05-02 03:25:13 这是一个新闻网站的导航栏。
站内栏目动态添加,可无限分类。数据库中的表结构如下。
CREATE TABLE `category` (
`cid` int(10) unsigned NOT NULL auto_increment,
`fid` int(10) unsigned NOT NULL default '0',
`name` varchar(50) NOT NULL default '',
`manager` varchar(20) default NULL,
`about` varchar(255) default NULL,
`num` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`cid`),
UNIQUE KEY `cid` (`cid`),
UNIQUE KEY `id` (`cid`),
KEY `name` (`name`)
) TYPE=MyISAM
处理导航的程序我现在是这样写的。
include "../nav.php";
$sql="select name,fid from category where cid=$cid";//从分类表中找出cid等于传来的参数cid的数据
$result=mysql_query($sql);
$array=mysql_fetch_array($result);
$cname=$array["name"];
$nfid=$array["fid"];
echo "fid=$fid ";
$p1=" <a href=show_category.php?cid=$cid&&fid=$nfid>$cname</a>";
//如果栏目多于一级
if($fid>"1") {
$sql="select name,fid from category where cid=$fid";//找上一级
$result=mysql_query($sql);
$array=mysql_fetch_array($result);
$cname=$array["name"];
$uid=$array["fid"];
$p1=$p1."<a href=show_category.php?cid=$fid&&fid=$uid>$cname</a>";//变量p,找到本类名
echo "uid=$uid ";
$sql2="select name,cid from category where cid=$cid";//找本级栏目
$result2=mysql_query($sql2);
$array2=mysql_fetch_array($result2);
$sid=$array2["cid"];
$cname=$array2["name"];
echo "uid=$uid ";
echo "cid=$cid";
$p1.=">> <a href=show_category.php?cid=$sid&&fid=$fid>$cname</a>";
}
/*end if*/
$position=$p1;//最后所有的栏目名放到$position中
nav.php是每个页面都要用到的一个导航。它给出二级页面的初始cid和fid
现在只能显示本级目录和上一级目录,多于三级之后,就无法显示第一级了。
也就是说
只有一个级: 栏目
二个级: 栏目>>子栏目
三个级: 子栏目>>子子栏目
第一级的:栏目 没有显示。
我的办法只能每两级一显示,有没有办法让有从属关系的栏目全显示。
注意分类是无限的。