您现在的位置:中国下载站学院中心网络编程PHP教程PHP实例教程 → 文章列表

用php理论上实现真正意义的无限级别菜单

作者:佚名  来源:不详  发布时间:2007-4-14 11:51:41   

减小字体 增大字体

 
 
  很久没用php了,为了加深数据结构的基本知识(为考试准备),练习一下基本的算法,当然还是为了以后使用php做菜单的时候免得麻烦。

  算法:数据结构中的最基本的树与二叉树的转换

  大家凑合着看吧!因为只是为了熟悉一下算法,没有做具体的测试,同时对数据库的操作没有封装成类,大家如果需要可以自行修改或者和我联系!

  Your data must save like this:

  id,topic,child_l,parent,child_r,content

  file name:

  show.inc.php

  codes:

  ==================================================

  <?
class shows{
   var $items;
   var $the_stack;
   var $count=0;
   
   function find($l_value) {
     for($j=1;$j<=$this->items["info_all"];$j++) {
       if($l_value==$this->items["d_id][$j]"])
       { return($j);exit; }
     
     }
       
   }
     
     
   function m_l_r_list($i) {
   
     if(($this->items["f_node][$i]"]==0)&&($this->items["r_node][$i]"]==0)&&($this->items["l_node][$i]"]!=-1))
     {//if it is root node!!!
       echo "<table><tr><td>";
       echo "<img id=image".$i." src=http://tech.ddvip.com/"c.gif\" onclick=outliner() style=\"cursor:hand\" child=\"".$i."ALL\" NAME=\"NAME_".$i."ALL\">";
       echo "<a href=\"".$this->pages_0($this->items["d_id][$i]"])."?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"]."</a>";
       echo " <a href=addnode.php?id=".$this->items["d_id][$i]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
       echo "</td></tr></table>";
       echo "<div class=collapsed id=".$i."ALL>";
       $i=$this->find($this->items["l_node][$i]"]);
       $this->count=$this->count+2;
       $this->m_l_r_list($i);
       exit;
     }
     if(($this->items["f_node][$i]"]==0)&&($this->items["r_node][$i]"]==0)&&($this->items["l_node][$i]"]==-1))
     {
       exit;
     }
      if(($this->items["f_node][$i]"]!=0)&&($this->items["r_node][$i]"]!=0)&&($this->items["l_node][$i]"]!=0))
      {//if node have left and right child
        $current_node=$this->items["d_id][$i]"];
        
        if(($this->items["l_node][$i]"]==-1)&&($this->items["r_node][$i]"]==-1)) {
         $i=$this->find($this->items["f_node][$i]"]);
         if(($this->items["r_node][$i]"]==$current_node)) {//his parent use right point
           $this->items["r_node][$i]"]=-1;
         }
         if(($this->items["l_node][$i]"]==$current_node)) {//his parent use left point
           $this->items["l_node][$i]"]=-1;
         }
         $this->count=$this->count-2;
         $this->m_l_r_list($i);
       }//if left child and right child have been visited up to his parent node
       
        if(($this->items["l_node][$i]"]!=-1)&&($this->items["r_node][$i]"]!=-1)) {
         echo "<table><tr><td>";
         for ($k=0;$k<$this->count;$k++) { echo " ";}
         echo "<img id=image".$i." src=http://tech.ddvip.com/"c.gif\" onclick=outliner() style=\"cursor:hand\" child=\"".$i."ALL\" NAME=\"NAME_".$i."ALL\">";
         echo "<a href=\"main.php?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"]."</a>";
         //echo $this->items["node_value][$i]"];
         echo " <a href=addnode.php?id=".$this->items["d_id][$i]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
         echo " <a href=delnode.php?id=".$this->items["d_id][$i]"]."><font size=2 color=red>Del</font></a>";
         echo "</td></tr></table>";
         echo "<div class=collapsed id=".$i."ALL>";
         $i=$this->find($this->items["l_node][$i]"]);//visite left child node
          $this->count=$this->count+2;
          $this->m_l_r_list($i);
       }//if left child node and right child node have not been visited
        
        if(($this->items["l_node][$i]"]==-1)&&($this->items["r_node][$i]"]!=-1)) {
          $i=$this->find($this->items["r_node][$i]"]);//visite right child node
          $this->m_l_r_list($i);
       }//if left child node have been visited and right child node have not been visited   
        
      }
      
     if(($this->items["f_node][$i]"]!=0)&&($this->items["r_node][$i]"]==0)&&($this->items["l_node][$i]"]!=0))
     {//if node only have left child
       $current_node=$this->items["d_id][$i]"];
       if($this->items["l_node][$i]"]!=-1) {
         echo "<table><tr><td>";
         for ($k=0;$k<$this->count;$k++) { echo " ";}
         echo "<img id=image".$i." src=http://tech.ddvip.com/"c.gif\" onclick=outliner() style=\"cursor:hand\" child=\"".$i."ALL\" NAME=\"NAME_".$i."ALL\">";
 

[1] [2]  下一页


在百度中搜索更多用php理论上实现真正意义的无限级别菜单相关网页 转贴于:中国下载站

  • 上一篇文章:一个记录用户踪迹的片段
  • 下一篇文章:用php实现简单的滑动菜单
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!