|
Publicité | ||||||||||||||||||||||
|
|
#1 | |
|
Futur Membre du Club
![]() Date d'inscription: avril 2009
Messages: 38
|
j'ai une colonne dans ma table de bdd sous cette forme
Citation:
Dernière modification par buns ; 30/06/2009 à 12h06. Motif: Ajout du balise [QUOTE] |
|
|
|
|
|
|
#2 | |
![]() Date d'inscription: mars 2002
Localisation: Au coeur de la Nébuleuse de la Rainette
Messages: 22 683
|
On t'a déja expliqué plusieurs fois qu'il fallait en fait une table de hierarchie
Code :
id rubrique parent 1 n1_1 0 2 n1_2 0 3 n2_1 1 4 n2_2 1 5 n2_3 1 6 n2_4 2 7 n3_1 5 le champs parent contient contient l'id du parent direct de la rubrique les champs ayant parent 0 sont les rubriques de premier niveau
__________________
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts ) Citation:
Votre post a trouvé une réponse qui vous satisfait ? Alors n'oubliez pas le Tag ![]() réalisations web (developpeur et/ou infographiste et/ou chef de projet: www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.sistac-alizay.fr | www.planet-languages.com | www.acoustishop.fr | www.litt.fr |
|
|
|
|
|
#3 |
|
Futur Membre du Club
![]() Date d'inscription: avril 2009
Messages: 38
|
je veux l'affichage d'un arbre, en fait ma table est sous cette forme
id rubrique parent 1 n1_1 0 2 n1_2 0 3 n2_1 1 4 n2_2 1 5 n2_3 1 6 n2_4 2 7 n3_1 5 et en plus j'ai une collonne de cette forme b1_a b2_a b3_a c1_b1_a c2_b1_a c1_b2_a c2_b2_a d1_c2_b2_a e1_d1_c2_b2_a d1_c1_b1_a f2_e1_d1_c2_b2_a mais mon probleme comment afficher la forme hierarchique par exemple ---a -----b1 --------c1 -----------d1 --------c2 -----b2 --------c1 --------c2 ----------d1 -------------e1 ---------------f2 ----b3 merci |
|
|
|
|
|
#4 | |
![]() Date d'inscription: mars 2002
Localisation: Au coeur de la Nébuleuse de la Rainette
Messages: 22 683
|
heu on peut pas recupérer un truc aussi mal parti ...
ta hierarchie est incompréhensible ...
__________________
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts ) Citation:
Votre post a trouvé une réponse qui vous satisfait ? Alors n'oubliez pas le Tag ![]() réalisations web (developpeur et/ou infographiste et/ou chef de projet: www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.sistac-alizay.fr | www.planet-languages.com | www.acoustishop.fr | www.litt.fr |
|
|
|
|
|
#5 |
|
Futur Membre du Club
![]() Date d'inscription: avril 2009
Messages: 38
|
comment je fais t'as une solution.merci
|
|
|
|
|
|
#6 | |
![]() Date d'inscription: mars 2002
Localisation: Au coeur de la Nébuleuse de la Rainette
Messages: 22 683
|
en plus c'est pas en javascript que va se faire l'essentiel de l'opération ...
ça se passera au niveau de la requete dans la base de données ... en mysql?
__________________
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts ) Citation:
Votre post a trouvé une réponse qui vous satisfait ? Alors n'oubliez pas le Tag ![]() réalisations web (developpeur et/ou infographiste et/ou chef de projet: www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.sistac-alizay.fr | www.planet-languages.com | www.acoustishop.fr | www.litt.fr |
|
|
|
|
|
#7 |
|
Futur Membre du Club
![]() Date d'inscription: avril 2009
Messages: 38
|
si je peux recuperer dans des liste ;f2_e1_d1_c2_b2_a et e1_d1_c2_b2_a
dans mon exemple je peux faire l'affichage de ces deuxcomme un arbre? |
|
|
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2003
Messages: 2 903
|
Tu ne nous aides pas à t'aider! On ne comprend ce que sont b1, b2, c2, etc.
Pour la table que tu donnes au tout début, il faut que tu sois capable de produire ce code javascript depuis le serveur : Code :
var a = [ ["n1_1", [ ["n2_1"], ["n1_2"], ["n2_3", [ ["n3_1"] ] ] ] ], ["n1_2", [ ["n2_4"] ] ], ]; Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>créer une arborescence</title> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <style type="text/css"> /* code css */ </style> </head> <body> <!-- code xhtml --> <script type="text/javascript"> var a = [ ["n1_1", [ ["n2_1"], ["n1_2"], ["n2_3", [ ["n3_1"] ] ] ] ], ["n1_2", [ ["n2_4"] ] ], ]; var FC = { creerListe: function(a) { var ul = document.createElement("ul"); for (var i=0,imax=a.length; i<imax; i++) { var li = FC.creerListeItem(a[i]) if (a[i].length>1 && typeof a[i] !== "string") { li.appendChild(FC.creerListe(a[i][1])); } ul.appendChild(li); } return ul; }, creerListeItem: function(item, ul) { var li = document.createElement("li"); var tn = document.createTextNode(item[0]); li.appendChild(tn); return li; } } document.body.appendChild(FC.creerListe(a)); </script> </body> </html> |
|
|
|
|
|
#9 |
![]() Date d'inscription: octobre 2007
Localisation: Paris
Messages: 491
|
Ce post m'amuse
Code :
function WeirdTreeItem(key, object) { this.subElements = {}; this.count = 0; this.key = key; this.object = object; } WeirdTreeItem.prototype.getItem = function(keyParts, object) { if(keyParts.length == 0) { if(object) { this.object = object; } return this; } var top = keyParts.shift(); if(! this.subElements[top]) { if(! object) return null; this.subElements[top] = new WeirdTreeItem(top); this.count++; } return this.subElements[top].getItem(keyParts, object); } WeirdTreeItem.prototype.addItem = function(object, options) { options = options || {}; options.keyProp = options.keyProp || null; options.separator = options.separator || "_"; options.reversed = options.reversed || false; var key = object; if(options.keyProp != null) { key = object[keyProp]; } var keyParts = key.split(options.separator); if(options.reversed) { keyParts.reverse(); } return this.getItem(keyParts, object); } WeirdTreeItem.prototype.draw = function(target) { if(this.key) { var li = document.createElement("li"); target.appendChild(li) li.innerHTML = this.key; target = li; } if(this.count > 0) { var ul = document.createElement("ul"); target.appendChild(ul); target = ul; for(var subElem in this.subElements) { this.subElements[subElem].draw(target); } } } WeirdTreeItem.prototype.isValid = function() { var thisValid = true; if(this.key) { thisValid = (this.object != null); if(! thisValid) { alert("La clé '" + this.key + "' n'a pas d'objet"); } } for(var subElem in this.subElements) { thisValid &= this.subElements[subElem].isValid(); } return thisValid; } var options = {reversed: true} var root = new WeirdTreeItem(); root.addItem("b1_a", options); root.addItem("b2_a", options); root.addItem("b3_a", options); root.addItem("c1_b1_a", options); root.addItem("c2_b1_a", options); root.addItem("c1_b2_a", options); root.addItem("c2_b2_a", options); root.addItem("d1_c2_b2_a", options); root.addItem("e1_d1_c2_b2_a", options); root.addItem("d1_c1_b1_a", options); root.addItem("f2_e1_d1_c2_b2_a", options); //root.isValid(); root.draw(document.body);
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition" |
|
|
|
|
|
#10 |
|
Futur Membre du Club
![]() Date d'inscription: avril 2009
Messages: 38
|
merci beucoup gwyohm,j'ai une question apropos de ta reponse ,mes donnes
b1_a b2_a b3_a c1_b1_a c2_b1_a c1_b2_a c2_b2_a d1_c2_b2_a ceux sont dans ma table (bdd)donc la forme hierarchique est dynamique a chaque fois je peux ajouter un fils ou un sous fils est ce que je peux recupere mes donner (b1_a,b2_a,...) dans une liste et je fais : root.addItem(maliste,options);est ce que je peux faire ca? |
|
|
|
|
|
#11 |
|
Futur Membre du Club
![]() Date d'inscription: avril 2009
Messages: 38
|
merci a toi aussi.franculo_caoulene
|
|
|
|
|
|
#12 | |
![]() Date d'inscription: octobre 2007
Localisation: Paris
Messages: 491
|
Citation:
[code] var elements = ["b1_a", "b2_a", ... , "en_dn_cn_bn_a"]; [code] Ensuite tu peux ajouter une méthode à l'objet WeirdTreeItem par exemple addItems et avec une "vanilla loop" appeler la méthode addItem pour chaque élément du tableau...
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition" |
|
|
|
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2003
Messages: 2 903
|
Je ne suis pas d'accord avec le principe proposé par gwyohm. Il y a trois étapes à dans le processus :
- extraire les données - traiter les données - mettre en forme l'arbre Il faudrait plutôt décomposer les valeurs (traiter les données) coté serveur et non coté javascript. Ça alourdi le code client. |
|
|
|
|
|
#14 | |
![]() Date d'inscription: octobre 2007
Localisation: Paris
Messages: 491
|
Citation:
Code :
var i=10000; var dtStart = new Date().getTime(); while(i>0) { var options = {reversed: true} var root = new WeirdTreeItem(); root.addItem("c2_b1_a", options); root.addItem("c1_b2_a", options); root.addItem("c2_b2_a", options); root.addItem("d1_c2_b2_a", options); root.addItem("b1_a", options); root.addItem("b2_a", options); root.addItem("b3_a", options); root.addItem("c1_b1_a", options); root.addItem("e1_d1_c2_b2_a", options); root.addItem("d1_c1_b1_a", options); root.addItem("f2_e1_d1_c2_b2_a", options); //root.isValid(); //root.draw(document.body); i--; } alert(new Date().getTime() - dtStart); La part de construction (celle qui selon toi est problématique et alourdi le client) est sur ce jeu de données (limité j'en conviens) de moins de 3 secondes sur FF et de moins de 6 sur IE7, sur ma machine. Ne conservons que le plus mauvais chiffre, cela fait une moyenne inférieure à 0,0006s par arbre ! Je n'appelle pas ca alourdir le client, et ca répond à la problématique.
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition" |
|
|
|
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2003
Messages: 2 903
|
Ce n'est pas dirigé contre toi et oui ça répond à la problématique. Mais tout ce qui peut être fait en amont, doit être fait en amont.
Dans l'utilisation qui est faite de javascript, les données ne devraient pas être traitées, mais juste utilisées. C'est un choix, ni plus, ni moins. |
|
|
|
|
|
![]() |
||
affichage d'un arbre a partir d'une colonne
|
||
| Outils de la discussion | |
|
|