新建一个
sort.php文件添加一些代码
- <?php
- //载入数据库类和模板类
- include "inc/class/db.php";
- //include "inc/class/smarty-tpl.php";
- //$tpl = new Template();
- // convert language gbk
- $db->query("set names gbk");
db里面非常简单
- <?php
- try {
- $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
- }
- catch (PDOException $e)
- {
- print "Error: " . $e->getMessage() . "<br/>";
- die();
- }
- ?>
我用的是pdo连接mysql,也可以用其他的
第5行里面有个包含smarty文件的语句被我注释掉了。
因为做完之后我发现这个模块如果用smarty会非常麻烦。
继续在sort.php里面添加代码
- $str = "<div>";
- //标题栏table
- $str .=
- "<table align='center' class='table' id = 'table_center' style = 'margin-top:20px;border-top:1px solid #1e79b9;'>
- <tr class='btr'>
- <td width = '30px' align='middle'><span class='STYLE1' >ID </span></td>
- <td align='left' width = '120px' ><span class='STYLE1'>类别描述</span></td>
- <td align='middle' width = '100px'><span class='STYLE1'>父级ID</span></td>
- <td align='middle' width = '100px'><span class='STYLE1'>编辑状态</span></td>
- </tr>
- </table>";
字符串组合输出来就是sort表的title
继续填加
- //从根节点开始计算
- tree(0);
- function tree($parent_id)
- {
- global $db;
- global $str;
- //取出当前节点下面的子节点
- $sql="select * from catalog where parent_id= ".$parent_id;
- $stmt = $db->query($sql);
- $stmt->setFetchMode(PDO::FETCH_ASSOC);
- $datas = $stmt->fetchAll();
- //如果有子节点。输出
- if(count($datas)>0)
- {
- //用空格的个数来标记层级
- for($i = 0;$i < $datas[0]['layer'];$i++)
- {
- $space .= ' ';
- }
- //默认只显示 最外层 ;
- if($parent_id != 0)
- {
- $hidden = " style = 'display:none'";
- }
- else
- {
- $hidden = "";
- }
- $str .= "<div id = div_".$parent_id.$hidden.">";
- foreach($datas as $value)
- {
- //查询当前节点是否还有子节点
- $sql="select count(1) from catalog where parent_id= ".$value['id'];
- $stmt = $db->query($sql);
- $stmt->setFetchMode(PDO::FETCH_ASSOC);
- $count = $stmt->fetchColumn();
- //如果当前节点没有子节点了 那么图片为 -
- if($count == 0)
- $img = 'hid.gif';
- //否则图片是 +
- else
- $img = 'show.gif';
- $str .=
- "<table align='center' class='table'>
- <tr class='btr'>
- <td align='left' width = '30px' >".$value['id']."</td>
- <td align='left' width = '120px' >".$space."<img src = 'inc/images/".$img."' onclick = 'tree(".$value['id'].",this)' /><span class='STYLE1'>".$value['cname']."</span></td>
- <td align='center' width = '100px'>".$value['parent_id']."</td>
- <td align='middle' width = '100px'>
- <div align='center' id = 'edit_div1'>
- <a href = 'add_catalog.php'>新增</a>
- </div>
- </td>
- </tr>
- </table>";
- tree($value['id']);
- }
- $str .= "</div>";
- }
- }
- $str .= "</div>";
先把根类别取出来,parent_id作为参数传递遍历这棵类别树
注释上写得比较清楚了。
如果当前类别下面有子类别 就递归的搜索,没有子类别就返回
这个字符串我全部组合完了。现在,把$str显示到前台。
最后一句
- include("templates/sort_tpl.php");