Page 1 sur 1
affichage d'un arbre
Posté : 15 déc. 2006, 02:57
par bwwilly
Salut

en fait j'ai une table pour enregistrer un arbre :
id | nom | id_pere
et je veux l'afficher en php en utilisant le systeme d'explorer windows (lorsque je clique sur un père ca m'affiche tous ses fils et pour les fils aussi ...)
en faite j'ai trouvé ce script mais vue que je suis vraiment encore débutant j'ai pas su comment l'utiliser pour afficher un contenu dynamique
lien de script :
http://php.developpez.com/sources/?page=phpjs#tabphpjs
Merci d'anvance !!
n'oubliez pas je suis DDDDubétant !!
Posté : 15 déc. 2006, 03:16
par Ajoloca
Bonsoir,
Si tu est débutant, je crois que tu t'attaques à un os dur à ronger.
Le PB c'est pas le script dont tu donnes le lien, c'est de construire ton tableau en partant de la base.
Essaie dans un premier temps de construire la requête qui va extraire de ta table les données dans un ordre exploitable avec des "GROUP BY" et "ORDER BY".
Une fois que tu auras ça, les difficultés commencent.
Si tu n'as qu'un seul abre c'est encore jouable, si tu en as plusieurs je ne suis pas sur que les infos que tu nous montres dans ta table soient suffisantes.
Ou alors tu devras procéder avec plusieurs requêtes et des critères de sélection au départ.
Fais déjà la première étape et on véra par la suite.
Posté : 15 déc. 2006, 13:23
par Invité
Merci Ajoloca
Essaie dans un premier temps de construire la requête qui va extraire de ta table les données dans un ordre exploitable avec des "GROUP BY" et "ORDER BY"
mais je pense qu'on doit pas tous faire dans une seule requête mais à chaque fois et récursivement on mis dans la partie gauche de array() le pere et tous ses fils dans la partie droite (WHERE Id_pere = id)
exemple :
Code : Tout sélectionner
array(racine => array( pere =>fils1 , fils2, fils3 => petit_fils ..))
en gros ca va faire quelque chose de genre :
Code : Tout sélectionner
$montab = array();
$res = mysql_query("SELECT * FROM matable WHERE id_pere = 0");
//pour la racine
while($row = mysql_fetch_assoc($res)){
$montab[$row["nom"]] = array();
$res2 = mysql_query("SELECT * FROM matable WHERE id_pere = ".$row["id"]);
while($row2 = mysql_fetch_assoc($res2)){
// et ca continue en remplissant $montab[$row["nom"]][$row2["nom"]] ....
}
}
mais j'ai voulus changer un peut l'idée du programmeur de script et tous faire dans une boucle (normalement selon le nembre max des fils d'un pere )
Merci
Posté : 15 déc. 2006, 13:39
par Ajoloca
Bonjour,
C'est sur que tu dois utiliser la récursivité.
Dans ton cas tu supposes que le id_pere 0 existe, et si c'est pas le cas ???
Une simple suppression et ta requête ne retourne rien.
Et le id_pere = 1, 2, 3, etc... que devienent-ils ???
Posté : 15 déc. 2006, 14:56
par Invité
oui Ajoloca j'ai toujours dans ma table un et un seul champ dont son id_pere = 0 (c'est la racine ) c'est une hypothèse que j'ai fais dans ma base , et je veux déjà l'essayer pour un seul arbre et puis pour quoi pas pour plusieurs arbres !!
