php 无限分类管理(3)

 

新建一个

sort.php文件添加一些代码

  1. <?php
  2. //载入数据库类和模板类 
  3. include "inc/class/db.php";
  4. //include "inc/class/smarty-tpl.php"; 
  5. //$tpl = new Template(); 
  6. // convert language gbk  
  7. $db->query("set names gbk");

db里面非常简单

 

  1. <?php
  2. try { 
  3.     $db = new PDO('mysql:host=localhost;dbname=test''root''root'); 
  4. }
  5. catch (PDOException $e)
  6.     print "Error: " . $e->getMessage() . "<br/>"
  7.     die(); 
  8. }
  9. ?>

我用的是pdo连接mysql,也可以用其他的

第5行里面有个包含smarty文件的语句被我注释掉了。

因为做完之后我发现这个模块如果用smarty会非常麻烦。

 

继续在sort.php里面添加代码

  1. $str = "<div>";
  2. //标题栏table 
  3. $str .= 
  4. "<table align='center' class='table' id = 'table_center'  style = 'margin-top:20px;border-top:1px solid #1e79b9;'>
  5.         <tr class='btr'>
  6.             <td width = '30px' align='middle'><span class='STYLE1' >ID </span></td>
  7.             <td align='left' width = '120px' ><span class='STYLE1'>类别描述</span></td>
  8.             <td align='middle' width = '100px'><span class='STYLE1'>父级ID</span></td>
  9.             <td align='middle'  width = '100px'><span class='STYLE1'>编辑状态</span></td>
  10.         </tr>
  11. </table>";

字符串组合输出来就是sort表的title

 

 

 

继续填加 

  1. //从根节点开始计算
  2. tree(0);
  3. function tree($parent_id)
  4. {   
  5.     global $db;
  6.     global $str;
  7.     //取出当前节点下面的子节点
  8.     $sql="select * from catalog where parent_id= ".$parent_id;
  9.     $stmt = $db->query($sql);
  10.     $stmt->setFetchMode(PDO::FETCH_ASSOC);
  11.     $datas = $stmt->fetchAll();
  12.     //如果有子节点。输出
  13.     if(count($datas)>0)
  14.     {
  15.         //用空格的个数来标记层级
  16.         for($i = 0;$i < $datas[0]['layer'];$i++)
  17.         {
  18.             $space .= ' ';
  19.         }
  20.         //默认只显示 最外层 ;
  21.         if($parent_id != 0)
  22.         {
  23.             $hidden = "  style = 'display:none'";
  24.         }
  25.         else
  26.         {
  27.             $hidden = "";
  28.         }
  29.         $str .= "<div id = div_".$parent_id.$hidden.">";
  30.         
  31.         foreach($datas as $value)
  32.         {
  33.             //查询当前节点是否还有子节点
  34.             $sql="select count(1) from catalog where parent_id= ".$value['id'];
  35.             $stmt = $db->query($sql);
  36.             $stmt->setFetchMode(PDO::FETCH_ASSOC);
  37.             $count = $stmt->fetchColumn();
  38.             //如果当前节点没有子节点了 那么图片为 -
  39.             if($count == 0)
  40.                 $img = 'hid.gif';
  41.             //否则图片是 +
  42.             else
  43.                 $img = 'show.gif';
  44.             
  45.             $str .=
  46.             "<table align='center' class='table'>
  47.                 <tr class='btr'>
  48.                     <td align='left' width = '30px' >".$value['id']."</td>
  49.                     <td align='left' width = '120px' >".$space."<img src = 'inc/images/".$img."' onclick = 'tree(".$value['id'].",this)' /><span class='STYLE1'>".$value['cname']."</span></td>
  50.                     <td align='center'  width = '100px'>".$value['parent_id']."</td>
  51.                     <td align='middle'  width = '100px'>
  52.                         <div align='center' id = 'edit_div1'>
  53.                             <a href = 'add_catalog.php'>新增</a>   
  54.                         </div>
  55.                     </td>
  56.                 </tr>
  57.             </table>";
  58.             tree($value['id']);
  59.         }
  60.         $str .= "</div>";
  61.     }
  62. }
  63. $str .= "</div>";

先把根类别取出来,parent_id作为参数传递遍历这棵类别树

注释上写得比较清楚了。

如果当前类别下面有子类别 就递归的搜索,没有子类别就返回

 

这个字符串我全部组合完了。现在,把$str显示到前台。

 

最后一句  

  1. include("templates/sort_tpl.php");

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值