2010-02-01 40 views
2

我想在PHP中集成異步樹視圖。現在我想知道如何使用PHP生成source php文件。如何在PHP中實現jQuery異步樹視圖?

現在我的數據庫結構是這樣的:

Create table School(
id int(10) NOT NULL AUTO_INCREMENT, 
name varchar(50), 
primary key(id) 
); 
Create table Class(
id int(10) NOT NULL AUTO_INCREMENT, 
name varchar(50), 
school_id int(10), 
primary key(id), 
foreign key(school_id) reference School(id) on delete cascade 
); 
Student(
id int(10) NOT NULL AUTO_INCREMENT, 
name varchar(50), 
class_id int(10), 
primary key(id), 
foreign key(class_id) reference Class(id) on delete cascade 
); 



School -> Class -> Student 

現在,我要實現樹視圖。你有什麼想法來實現它嗎?

非常感謝。

附加問題:當我完成treeview。如果我單擊樹形視圖中的項目,它將通過單擊生成結果表。你知道怎麼做嗎?

但是,首先我應該完成treeview。

回答

1

所以基本上你需要(僞代碼):

$tree = array(); 
/** 
* the following line essentially executes the Query: 
* SELECT * from schools; 
* and returns all the rows in an array like 
* $schools = Array(0=>array('id'=>1, 'name' => 'name')) 
*/ 
$schools = $db->schools()->selectAll(); 

foreach($schools as $school) 
{ 
    $schoolArr = array('text' => $school['name']); 

    /** 
    * Similar to the calls to school above except the query would be: 
    * SELECT * from class where class.school_id = $school['id'] 
    * $school['id'] is the pk from the particular school record 
    */ 
    $classes = $db->classes()->select("school_id = ?", $school['id']); 
    $classesArr = array(); 
    foreach($classes as $class) 
    { 
     $classArr = array('text' => $class['name']); 
     /** 
     * Similar to the calls to school above except the query would be: 
     * SELECT * from student where student.class_id = $class['id'] 
     * $class['id'] is the pk from the particular class record 
     */ 
     $students = $db->students()->select('class_id = ?', $class['id']); 
     $studentsArr = array(); 
     foreach($students as $student) 
     { 
      $studentsArr[] = array('text' => $student['name']); 
     } 

     $classArr['children'] = $studentsArr; 
     $classesArr[] = $classArr; 
    } 

    $schoolArr['children'] = $classesArr; 
    $tree[] = $schoolArr; 
} 

$jsTreeString = json_encode($tree); 

現在很明顯,當您去通過每一個你需要assinging你的其他樹性質循環。那麼當你完成所有的工作時,只需json_encode數組並在需要的地方回顯它。至少這是ID如何工作。但請注意,您可以在沒有使用某些連接的單個查詢的情況下執行此操作,但我不想進入所有這些 - 您肯定會想要探索,儘管如果性能完全是問題。

+0

@prodigitalson,謝謝,你絕對是對的。但是,我不知道該怎麼做?你的第二行是什麼意思?你有沒有使用任何框架? – 2010-02-01 14:55:03

+0

第二行是jsut一些僞代碼來從數據庫中獲取信息...你沒有指定你使用的是哪個數據庫擴展名和/或ORM,所以我只是編造了一些假設的東西,假設你用通常使用的任何東西來補充thos調用訪問你的數據庫。虐待與一些細節... – prodigitalson 2010-02-01 14:59:38

+0

@prodigitalson,非常感謝你。 ;) – 2010-02-01 15:01:09

0

看起來這個article/example code可能是你在實現樹視圖時感興趣的。

+0

謝謝,它似乎是一個很好的框架etmvc。但實際上我正在使用jQuery-treeview。 http://jquery.bassistance.de/treeview/demo/async.html – 2010-02-01 14:28:42

1

如果你想用jQuery完成這個樹視圖,我會建議使用this plugin。你只需要運行一個JS函數,它就可以工作。而你所有的PHP部分必須做的是從數據庫獲取數據並生成一個HTML,jQuery插件可以轉換爲treeview。

+0

@RaYell,謝謝。我正在使用這個插件,但我不知道如何生成一個HTML。這是我現在的問題。 – 2010-02-01 14:25:46