天天看點

PHP資料庫樹的周遊方法

PHP資料庫樹的周遊方法

代碼如下:

<?php

session_start();

define ('P_S', PATH_SEPARATOR);

define ('ROOT', "./");

set_include_path(ROOT .P_S .'Zend' .P_S .ROOT.get_include_path());

//加載ZEND 架構

require_once ROOT.'Zend/Loader.php';

require_once 'usercheck.php';//加載通路權限

Zend_Loader::loadFile('function.class.php', $dirs='class/', $once=false);//加載函數

Zend_Loader::loadClass('Zend_Db');//加載資料庫類

Zend_Loader::loadClass('Zend_Config_Ini');//加載配置類

$config = new Zend_Config_Ini('config.php', 'general');//建立配置對象

$db = Zend_Db::factory($config->db->adapter,$config->db->config->toArray());//建立資料庫對象

$select=$db->select();

$select->from('ResClass',array('lsh','name'));

$select->where('steps = 1');

$rs=$db->fetchAll($select);

foreach ($rs as $res){

      echo '&nbsp;&nbsp;&nbsp;&nbsp;'.$res['lsh'].$res['name']."<br>";

      Visit($res['lsh'],1);

}

    function Visit($nodeid,$stept){

                      global $db;

                      $recordset = "SELECT lsh,name FROM ResClass WHERE parent=".$nodeid;  //搜尋nodeid的所有下層節點

                      $rs=$db->fetchAll($recordset);

                      foreach($rs as $rss){

                                    if(!$rss)

                                             return;  //已經是葉子節點,直接傳回

                                    else{

                                               for ($i=0;$i<4*$stept;$i++){

                                                          echo "&nbsp;";

                                                 }

                                            echo '&nbsp;&nbsp;&nbsp;&nbsp;'.$rss['lsh'].$rss['name']."<br>";

                                            Visit($rss['lsh'],$stept+1);

                                    }

                          }

}

?>