UNE ARBORESCENCE.

LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009 - 4 mars 2008 à 10:43
cs_flashnet Messages postés 2 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 10 janvier 2009 - 10 janv. 2009 à 14:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45943-une-arborescence

cs_flashnet Messages postés 2 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 10 janvier 2009
10 janv. 2009 à 14:00
Le script fonctionne super bien par contre au lieu de faire des listes avec et <li> serait-il possible de faire des sauts de ligne et des espaces entre les cat?gories (dans le but de mettre des images ? la place) ?

Exemple :
Cat1
ss Cat1
sss cat
Cat2 etc...

Je ne vois pas la solution... Merci
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
7 mars 2008 à 09:34
Coucou, je suis parfaitement d'accord avec toi pour dire que le xml serait plus gourmand en ressource que le sql, mais dire que c'est plus simple, à mon avis ca va dépendre de la structure de ta base.
En effet, le xml étant déjà structuré comme un arbre, sa compréhension est directe.

Mais apres c'est clair, ya pas photos, sur un site avec des serveurs décentralisés, le sql sera la meilleure méthode !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 mars 2008 à 02:49
t'as parfaitement raison codefalse, mais tu traites plus facilement du sql que du xml... et avec moins de ressources... enfin, c'est pas du tout le meme genre de choses, genre imagine sur CS, t'as pas qu'un seul serveur, donc avoir du sql, c'est mieux que des fichiers...

fhx, l'idee de mettre ton xml en sql, ca veut dire que pour traiter ton xml, tu dois appeller mysql ou autre puis traiter ton xml avant de pouvoir faire tes modifs, puis remettre tout ca en mysql... c'est franchement lourd comme methode...
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
6 mars 2008 à 23:22
ouah ! Fhx ! Ca faisait un moment :p

Bon je dirai que je suis d'accords pour le fait que le xml s'approche plus de la notion d'arborescence vu que C'EST de l'arborescence :p Apres Sql, ce sera de l'arbo abstraite, puisqu'il faudra construire son arbre en bien pensant sa requete !

Apres, c'est mon avis ! :p
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 mars 2008 à 19:39
fhx, en sql, ca implique de parser ton xml...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 mars 2008 à 19:30
Hello,

"tu ne peux pas faire ca avec des options et select."
si, avec <optgroup />
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
6 mars 2008 à 19:26
Pour faire un arbre de ce type, utilise XML :

<racine>
<element1>Nom</element1>
<element2>xxx...</element2>
<element3>
<sselement31>...</sselement31>
<sselement32>...</sselement32>
</element3>
</racine>

Si tu veux le sauvegarder, parse ton document XML pour le foutre en chaine et ou dans une base SQL par la suite.

Pour un arbre, XML y'a pas mieux !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 mars 2008 à 13:47
tu ne peux pas faire ca avec des options et select.
cs_stefane321 Messages postés 31 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 21 juillet 2009
6 mars 2008 à 04:52
Je choisie la méthode 1 pour naif qui me convient bien.

Mais je souhaite l'utiliser pour une liste déroulante.

J'ai donc modifier le html de la fonction pour ceci:

function affArbo1($id=0){

$r=mysql_query('SELECT id, nom FROM arbo1 WHERE id_parent='.$id) or die(mysql_error());
while($data=mysql_fetch_assoc($r)){
echo '<option>'.$data['nom'].'</option>';
affArbo1($data['id']);

}

}
echo '<select>';
affArbo1();
echo '</select>';

Sa marche sauf il n'y a pas de démarcation entre les parent et les enfants.

Pouvez-vous svp m'aider à obtenir un affichage du genre:

<select name="categories">
<option value="1">Fruit</option>
<option value="2">Fruit -> Sud-americain</option>
<option value="3">Fruit -> Sud-americain -> Orange</option>
<option value="4">Fruit -> Sud-americain -> Pamplemousse</option>
<option value="5">Fruit -> Nord-americain</option>
<option value="6">Fruit -> Nord-americain -> Pomme</option>
<option value="7">Fruit -> Nord-americain -> Bleuet sauvage</option>
<option value="8">Fruit -> Nord-americain -> Citrouille</option>
</select>

Merci!
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
5 mars 2008 à 23:11
Je veux bien te croire :)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mars 2008 à 18:52
... c'est juste un "type" arbre stoque en sql...

j'ai commence a faire un truc en OO, mais ca n'aurait pas ete le meme genre de source, celle ci doit-etre comprehensible par tous, simple et claire. l'autre, fait une classe Element, une classe Elements, une abstraction sql, une classe MyIterator, une class abstraite Arbo, deux classes Arbo, mais pour qu'elles soient generiques, faut des descriptions de types d'elements...

bref c'est pas simple...
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
5 mars 2008 à 18:37
Honnetenement ? non, je n'ai pas de solutions.
A vrai dire je ne comprends pas tres bien le principe d'arborescence et je n'ai malheureusement pas le temps de m'y mettre. Désolé :/
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mars 2008 à 15:22
codefalse, si tu trouves une methode interessante pour modeliser ca en Objet, je serais curieux d'avoir un diagramme, parce-que moi, ce que j'arrive a faire devrait :
- s'integrer a part entiere dans :
- la SPL
- un framework
- php6

ou

- ne servirait a rien tout seul

j'ai prefere expliquer les principes vaguement... en corrigant quelques requetes de developpez, et en postant un exemple.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 mars 2008 à 19:50
Hello,

il faut aussi préciser que cette méthode, si elle permet d'afficher une arbo bien plus rapidement, ne convient absolument pas pour une arbo qui serait amenée à bouger. Ca doit être quasiment du statique.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2008 à 18:41
en une image, ca donne ca :

http://sqlpro.developpez.com/cours/arborescence/images/SQLtree2_1.gif

l'arbo 2 c'est ce schemat...
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
4 mars 2008 à 13:27
C'est vrai que ca aurait été mieux en Poo ^^ :p

Par contre, malgré le pré-requis, une petite description rapide de l'utilité des fonctions serait la bienvenue, histoire qu'en quelques lignes on comprenne de quoi ca parle :)
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
4 mars 2008 à 10:43
J'ai pas le temps de lire le tutoriel de Developez.com complet maintenant donc je pose quand même ma question ...
Tu peux vite fait expliquer à quoi correspond la méthode non-naïve ?
Rejoignez-nous