发新话题
打印

PHP无限树形列表源码全演示(区别于树形菜单)亲写并测试

PHP无限树形列表源码全演示(区别于树形菜单)亲写并测试

先看效果

这个就是PHP树形列表
首先先建立数据库
[Copy to clipboard]
PHP CODE:
CREATE TABLE IF NOT EXISTS `cms_column` (
  `
columnidint(4NOT NULL default '0',
  `
columnfatheridint(4NOT NULL default '0',
  `
columnnamevarchar(100NOT NULL default '',
   
PRIMARY KEY  (`columnid`)
) ;


[Copy to clipboard]
PHP CODE:
INSERT INTO `cms_column` (`columnid`, `columnfatherid`, `columnname`) VALUES
(10'美丽杭州'),
(
20'体育娱乐'),
(
31'星球速递'),
(
40'快乐童年'),
(
54'喜欢各自'),
(
65'发奋图强'),
(
72'北京奥运'),
(
90'星球追寻'),
(
100'你我分享'),
(
110'安静水月'),
(
120'寒星点点'),
(
130'月光韬晦'),
(
140'韬光养晦');

以上是表和表结构

下面是程序  我会尽量多用点注释
这个函数用来返回上面效果中─字符串
PS:这个程序经过LEO的指点,当时一下子想不到
[Copy to clipboard]
PHP CODE:
function ReturnStr($var)
{
for(
$a=0;$a<=$var;$a++)
$str.="─";
return 
$str;
}


这个函数就是实现无限树形列表
我利用ADODB类去实现,具体各位同志自己修改
[Copy to clipboard]
PHP CODE:
$sql="select * from cms_column where columnfatherid=0"//从数据库查找第一级菜单
$result=$DB->Execute($sql);
echo
"<select name=\"select\" id=\"select\">";
function 
ShowMenu($result)
{
global 
$DB;

while(
$menu=$result->FetchRow())//开始输出菜单输出菜单循环

static 
$layer=0//很重要 这个static变量,用在输出菜单名字前的─的个数
//static $str;
  
echo "<option>"
  echo 
ReturnStr($layer).$menu[columnname]; 
        echo 
"</option>"//开始第一级菜单
  
$sql="select * from cms_column where columnfatherid=$menu[columnid]"//查找不是第一级的菜单,有FATHERID的
  
$result_sub=$DB->Execute($sql);
  if(
$result_sub->RecordCount()>0)
  {
     
$layer++;
   
ShowMenu($result_sub);  //递归 输出第二,第三等等无限级列表
  
}

}
$layer--; 
}
if(
$result->RecordCount()>0ShowMenu($result); 
echo 
"</select>";

好了  大家去现实吧 有问题下面跟贴
在接下来
我还将推出PHP无限树形菜单的演示
附件: 您所在的用户组无法下载或查看附件
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

我怎么搞不定啊 所所。。。
[Copy to clipboard]
PHP CODE:
<?php
   
function ReturnStr($var)
   {
        for(
$a=0;$a<=$var;$a++){
     
$str.="--";
     return 
$str;
  }
   }
   
$link=mysql_connect("localhost","root","8821") or die("Can not link mysql".mysql_error());
   
mysql_select_db("shu") or die("can not select table".mysql_error());
   
mysql_query("set names 'gb2312'");
   
$sql="select * from shubiao where fatherid=0";
   
$result=mysql_query($sql) or die("执行数据失败".mysql_error());
   echo
"<select name=\"select\" id=\"select\">";
   function 
ShowMenu($result){

      while(
$row=mysql_fetch_array($result)){
     static 
$layer=0;
  echo
"<option>";
  echo 
ReturnStr($layer).$row["name"];
  echo
"</option >";
  
$sql="select * from shubiao where fatherid=$row[id]";
  
$result=mysql_query($sql);
  
$row=mysql_num_rows($result);
  if(
$row>0){
    
$layer++;
    
ShowMenu($result);
  }
   }
   
$layer--;
   }
   if(
$row>0ShowMenu($result);
   echo
"</select>";
?>
世界极静  只有灵魂独舞--------世界上没有任何事可以替代坚持。

我们都需要论坛 论坛也同时需要我们的支持

TOP

帮我看看 那里错了
世界极静  只有灵魂独舞--------世界上没有任何事可以替代坚持。

我们都需要论坛 论坛也同时需要我们的支持

TOP

哦 知道了 哈哈  有两个$result了 。。系统搞不清除了。。哈哈
世界极静  只有灵魂独舞--------世界上没有任何事可以替代坚持。

我们都需要论坛 论坛也同时需要我们的支持

TOP

ReturnStr

复制内容到剪贴板
代码:
<?php
function ReturnStr($var,$str="-")
{
$Rstr="";
if($var>0&&$var<>""&&$str<>""){
    for($a=0;$a<$var;$a++)
   $Rstr.=$str;
}
return $Rstr;
}
?>
使用方法:
[Copy to clipboard]
PHP CODE:
echo ReturnStr(1,"--");
输出结果:
--

等我挣了100万我就找个人娶了!哈哈!

TOP

跟小所哥哥上回发的那个程序好像
大家努力,把论坛发展起来!!!!!!!!

TOP

因为道理是一样的
都是用到递归的方法来实现
记得上次面试的时候
问此类实现除了递归外还有其他的没?
当时蒙了
不知道除递归外还有别的显示无限树形菜单或列表的方法没?
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

我发现 LEO 发的 那个函数可以用  所所发的那个函数就不行  怎么搞的
世界极静  只有灵魂独舞--------世界上没有任何事可以替代坚持。

我们都需要论坛 论坛也同时需要我们的支持

TOP

你不是已经行了吗?
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

有点看不懂。。。 哎。还需要努力。。

TOP

发新话题