2010-02-01 5 views
2

Je veux intégrer une arborescence asynchrone en PHP. Maintenant, je veux savoir comment générer un fichier source php avec PHP.Comment réaliser jQuery async treeview en PHP?

Maintenant, ma structure de base de données est comme ceci:

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 

Maintenant, je veux réaliser le TreeView. Avez-vous des idées pour l'implémenter?

Merci beaucoup.

Question supplémentaire: Quand je finis l'arborescence. Si je clique sur les éléments dans l'arborescence, il va générer une table de résultat en cliquant sur. Savez-vous comment faire cela?

Cependant, premièrement, je devrais terminer la vue arborescente.

Répondre

1

Donc, fondamentalement, vous devez (pseudo code):

$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); 

Maintenant, évidemment, que vous passez par chaque boucle, vous devez être assinging vos autres propriétés d'arbres. alors quand tout est fait juste json_encode le tableau et l'écho où je dois être. Au moins, c'est comment ça marche. Notez cependant que vous pouvez probablement le faire sans une requête individuelle en utilisant certaines jointures mais je ne voulais pas entrer dans tout cela - vous allez certainement explorer cela si la performance est du tout un problème.

+0

@prodigitalson, Merci, vous avez certainement raison. Mais, je ne sais pas comment faire ça? Que signifie votre deuxième ligne? Avez-vous déjà utilisé des cadres? –

+0

La deuxième ligne est jsut un code pseudo pour obtenir les informations de la db ... vous ne spécifiait pas quelle extension db et/ou ORM que vous utilisez donc je viens de faire quelques trucs pseudo en supposant supplément youd Thos appelle avec tout ce que vous utilisez normalement pour accéder à votre db. ammend malade avec quelques détails ... – prodigitalson

+0

@prodigitalson, merci beaucoup. ;) –

0

Il semble que ce code article/example code pourrait vous intéresser dans l'implémentation de l'arborescence.

+0

Merci, il semble que ce soit un joli cadre etmvc. Mais en fait j'utilise jQuery-treeview. http://jquery.bassistance.de/treeview/demo/async.html –

1

Si vous voulez que cette arborescence soit faite avec jQuery, je suggère d'utiliser this plugin. Vous avez juste besoin d'exécuter une fonction JS et cela fonctionnera. Et tout ce que PHP a à faire est d'obtenir des données de db et de générer un HTML que le plugin jQuery peut transformer en treeview.

+0

@RaYell, Merci. J'utilise ce plugin, mais je ne sais pas comment générer un HTML. C'est mon problème maintenant. –

Questions connexes