IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Creer un Treeview qui utilise AJAX et PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut [PHP-JS] Creer un Treeview qui utilise AJAX et PHP
    Bonjour

    Je souhaite mettre en place un treeview base sur Ajax, avec donc un chargement des nodes enfant au moment du developpement de la node de la node parent, et si possible que les nodes enfant puissent eventuelement etre en HTML...

    Je ne sais pas trop par ou commencer...donc je viens demander conseil.

    A priori, j'ai deux possibilite, soit j'utilise une source exitante libre, soit je le developpe moi meme

    J'ai commence a regarder des sources existantes mais je n'ai rien trouve de libre et vraiment satisfaisant...si quelqu'un a une bonne source je suis preneur.

    Je suis assez motive pour le developper moi meme ( bien que j'ai un peu peur du resutat...), mais je ne sais vraiment pas trop comment partir au niveau du principe objet d'un treeview..donc pareil, si quelqu'un peut m'aiguiller un peu pour le demarage ce serait vraiment sympa!

    merci a vous!

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Ayant developpé une taxinomie je pense "peut être" pouvoir t'aider.
    Si tu connais l'objet c'est mieux car ça t'ouvrira beaucoup de possibilité. De là tu peux tu peux te lancer et même s'il existe déjà des applications (je pense) c'est plus formateur.

    Commence par te poser les bonnes questions : Un élément de mon abre est caractérisé par quoi ? un nom, un id, etc.

    Il me semble qu'il y a un tuto ici qui traite du sujet.
    Edit : http://sqlpro.developpez.com/cours/arborescence/
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  3. #3
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    Salut et merci pour ta reponse,

    J'ai regarde un petit peu le lien que tu m'as donne.

    Comme pas mal d'exemples que j'ai trouve, ce tuto, si j'ai bien compris, part sur la base d'une seule table qui stock les elements de l'arbre et leur liens sous forme d'ID parent/fils.
    Je travail avec une base existante qui ne fonctionne pas avec ce principe : J'ai plusieurs tables relies par des relations 1 a n entre elles et qui constituent mon arbre :

    a la racine j'ai plusieurs projets, chaques projets a plusieurs "targets", chaque target a plusieurs "construct"...etc sur 5 niveaux. Chaque niveau est enregistre dans une table (table projet, table target, table construct...etc)

    Je veux creer donc un arbre qui represente cela comme tu l'auras compris

    donc j'ai besoin d'un objet 'node', qui va avoir un identifiant (cle primaire de ma table par exemple), une description, et, je ne suis pas trop sur de ca (cf ci-dessous), une requete qui va me permettre de trouver ses enfants par une methode getChild( )

    j'ai plusieurs probleme :

    - A priori, ce schema objet est a utiliser au niveau du javascript, pas du php?
    - Comment gerer proprement les differents changements de requetes des differents enfants sans coder en dur les differents niveaux ( faire un objet generique qui fonctionnera a tous les niveaux **)? Ou est que par exemple je dois ajouter un attribut niveau a mon objet 'node', qui va me permettre de retrouver la bonne requete a utiliser dans chaque niveau. Par exemple dans un autre fichier un gros select case avec les equivalences nv->requete..?

    ** Sachant que la requete de selection n'etant pas toujours la meme, a la racine c'est :
    SELECT * FROM Project WHERE User = 'xxxxxx';
    Au niveau 1 c'est
    SELECT * FROM Targer WHERE User = 'xxxxxx' AND Project = 'yyyyy';
    ...
    etc

    - Est-ce que je dois differencier, au niveau objet, les branches des feuilles? ( a priori je pencherai pour un oui, mais n'etant pas expert de l'optimisation du code, je prefere demander histoire d'etre sur )

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Ha ha ha tu es rentré dans le piège.
    Tu n'as aucun problème tu n'as que des solutions. Quelque soit la provenance des informations le but premier c'est de reussir à créer un objet que va contenir ses petits, c'est à dire c'est éléments enfant. En gros :
    Root-
    Element_1
    Element_1_1
    Element_1_1_1
    Element_1_1_2
    Element_1_2
    Element_1_3
    Element_2
    Element_2_1
    Element_2_2
    Element_2_3

    De là tu auras un objet ayant l'ensemble des informations. Un élément doit pouvoir avoir acces au information de ses parent c'est avoir l'objet de sont parent. Ainsi il peut connaitre son ancetre. L'élément en cours a aussi acces au information de ses fils donc de ses petit fils. Les fils est une collection d'objet élément stocker dans l'élément en cour.
    Dans l'exemple : Element_1 à une collection d'objet Element_1_1, Element_1_2, Element_1_3
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  5. #5
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    ...bon je suis pas sur d'avoir bien compris...

    Je comprend ca comme ca : j'ai une classe node, qui va contenir un objet nodeParent, de type node et une collection de nodes qu'on va appeler nodesEnfants.

    C'est pas un peu lourd d'incorporer directement les objets?

    Partant sur cette base et toujours dans l'optique de faire de l'AJAX, nodesEnfants va etre mis a jour par une fonction par exemple sur click sur la node a priori

    Pour gerer mes differentes requetes d'acces a la BD vis a vis de cette organisation...je mets une variable requete dans mon objet node avec la requete qui permet d'obtenir les infos nodes filles et les creer?

    et je n'arrive pas bien a voir ou s'arrete le javascript et ou commence le php..
    Est-ce que j'utilise php juste pour passer les requetes et renvoyer les tuples dans un tableau, et c'est javascript qui se debrouille pour creer les objets?

  6. #6
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par bambou
    ...bon je suis pas sur d'avoir bien compris...

    Je comprend ca comme ca : j'ai une classe node, qui va contenir un objet nodeParent, de type node et une collection de nodes qu'on va appeler nodesEnfants.

    Est-ce que c'est pas un peu lour d'incorporer directement les objets?

    Partant sur cette base et toujours dans l'optique de faire de l'AJAX, nodesEnfants va etre mis a jour par une fonction par exemple sur click sur la node

    Pour gerer mes differentes requetes vis a vis de cette organisation...je mets une variable requete dans mon objet node avec la requete qui permet d'obtenir les infos nodes filles et les creer?

    et je n'arrive pas bien a voir ou s'arrete le javascript et ou commence le php..
    Est-ce que j'utilise php juste pour passer les requetes et renvoyer les tuples dans un tableau, et c'est javascript qui se debrouille pour creer les objets?
    Tes éléments peuvent être un enfant comme il peuvent être un noeud donc parent.
    Le plus important c'est que tu définisses clairement ton élément. Oublie ajax et base de données. Imagine seulement la vie de ton objet.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  7. #7
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    OK, on oubli ajax et tout et on reste sur le principe de base de l'arbre et de l'element node qui le compose :

    J'ai ma classe node, qui va contenir une variable de type node qui represente le parent, une collection de variables de type node qui represente les enfants, un certains nombres d'attributs (description, image...etc) et de methodes ( constructeur basique, ajout du parent, recherche des enfants, afficher/cacher les enfants..etc)

    ca c'est bon, je commence a cerner le principe

    cela dit, il faut bien que je tienne compte des specificite liees a AJAX dans les methodes de mon objet et du fait quelles vont etre appelles sur certains evenement, lors de ca conception non?

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Ben pour y voir plus clair nous allons commencer a faire un petit squelette!

    Class Element{
    Id;
    Nom;
    objParent;
    arrObjFils;

    ...
    /* Les accesseurs*/
    }
    arrObjFils = array();
    Element = new Element();
    Element.setNom("Element 1");

    arrObjFils[0] = new Element();
    arrObjFils[0].setObjParent(Element);
    arrObjFils[0].setNom("Element 2");

    arrObjFils[1] = new Element();
    arrObjFils[1].setObjParent(Element);
    arrObjFils[1].setNom("Element 3");

    Element.setObjFils(arrObjFils);

    Avec cette exemple (épuré) tu as un objet qui possede deux fils. A partir de là tu peux faire cette arbre là.

    Element1
    Element2
    Element2

    tous ce qu'il te reste à faire c'est de voyager dans ton objet Element. Via Ajax tu peux toucher n'importe quoi de n'importe ou.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  9. #9
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    Ok ca roule, je voyait ca effectivement a peu pres comme ca. Pour AJAX du coup c'est un peu plus clair aussi.

    Il me reste le probleme de mes differentes requetes qui determinent le contenu des differents elements.
    Je suis oblige de coder chaque niveau un par un (le nombre de niveaux est fixe avec un affichage particulier pour certains niveaux), je ne peux pas passer par une fonction recurssive, une boucle ou un sous objet de l'objet element specifique pour chaque niveau pour gerer ca?

  10. #10
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par bambou
    Ok ca roule, je voyait ca effectivement a peu pres comme ca. Pour AJAX du coup c'est un peu plus clair aussi.

    Il me reste le probleme de mes differentes requetes qui determinent le contenu des differents elements.
    Je suis oblige de coder chaque niveau un par un (le nombre de niveaux est fixe avec un affichage particulier pour certains niveaux), je ne peux pas passer par une fonction recurssive, une boucle ou un sous objet de l'objet element specifique pour chaque niveau pour gerer ca?
    Si justement. En faite, là je t'ai placé le code en mode en dure mais elle peut être exploité en recurcif. Mais apparement dans ton cas les informations sont présente dans une seul table. A toi de les réunir pour avoir tes info nécessaire. Le but du jeux là, c'est de pouvoir donner l'id parent et les fils associés arriverons et seront placé dans leur objet respectif. Le fils feront la même opération.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  11. #11
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    bon j'abandonne, ca va etre difficile de tout faire moi-meme par rapport aux fonctionnalites qu'on me demande et dans le temps ou l'on me les demande..donc je vais partir de tafelTree qui as l'air de faire ce dont j'ai besoin

    merci pour ton aide

Discussions similaires

  1. [MySQL] Remplir une liste déroulante en utilisant AJAX et PHP
    Par alfred5 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/01/2015, 00h14
  2. Creer un setup qui utilise mysql
    Par bacarndiaye dans le forum C#
    Réponses: 2
    Dernier message: 10/02/2012, 17h14
  3. Réponses: 6
    Dernier message: 16/01/2006, 15h24
  4. [CKEditor] Qui utilise FCKeditor sur son site php pour config ?!
    Par guy2004 dans le forum Bibliothèques & Frameworks
    Réponses: 62
    Dernier message: 26/10/2005, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo