Bonjour,
J'ai une petite question sur le parcours d'un arbre à la manière d'une liste
chainée en C.
J'ai une table dans une base de donnée (mysql) composée comme suit:
un champ nom, un champ temps, un champ parent, un champ id
j'ai actuellement un arbre de ce style:
1
/ \
3 2
/
4
J'aimerais pouvoir sortir la somme de temps pour un noeud precis:
exemple pour le noeud 1 qui serait en fait la somme de temps de 2, 4 ou le
noeud 3 celle de 4 ou le noeud 2, la valeur de 2.
J'ai fait la fonction suivante qui prend en paramètre le numéros du noeud
pour lequel je veux connaitre la somme des temps attachés, le temps, et la
connexion à la SGBD.
function get_temps($id_tache, $temps, $lien) {
$query = "select t_id from t_tache where t_parent = '$id_tache'";
$result = mysql_query($query, $lien);
$nbr = mysql_num_rows($result);
if ($nbr == 0) {
$query = "select t_temps_est from t_tache where t_id = '$id_tache'";
$result2 = mysql_query($query, $lien);
$row2 = mysql_fetch_row($result2);
return ($row2[0]);
} else {
while ($row = mysql_fetch_row($result) ) {
$temps += get_temps($row[0], $temps, $lien);
}
}
return ($temps);
}
J'ai essayé avec des valeurs comme 50 et 20 pour les noeud 2 et 4 mais ça me
sort 120 !
Je ne sais pas trop comment faire et surtout comment optimiser mon truc
parce que j'ai remarqué que sur de gros arbres d'une centaines
d'enregistrements c'était plutôt lent.
Merci beaucoup de vos réponses.