Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour:
SVP, je suis très debutant en développement et surtout en php et là j'ai un très grand problème que je n'arrive pas à résoudre et je suis perdu sur le net. J'ai besoin d'afficher des données de ma bases de données à l'aide d'une fonction. Normalement mes données sont liées entre eux à l'aide d'une association père-fils je vous cite comment est ma table (réference (clé), ref_père, ordre(l'ordre du fils), volet(le numéro du volet de la donnée), libellé et l'indicateur (exemple: 1 , 1.1.2 , 2.5).
vers la fin je vous dis comment je dois afficher:
1.X
1.1 XX
1.1.1 XXX
1.2 YY
2.Z
2.1 ZZ
.
.
.
et ainsi de suite SVP aidez moi ne serai que par la syntaxe d'une fonction récursive qui affiche genaralement. car je peux pas perdre plus de temps à chercher sur le net j'ai des delais Merci beaucoup j'attend votre réponse!!!
Merci encore une fois
Hors ligne
Salut,
Première chose : désolé pour tes délais mais ils ne sont pas les nôtres. Le bénévolat effectué ici est sur notre temps personnel qui nous est très cher !
Ton problème se recoud par une requête sql bien sentis et le tuto l'utilisation de php avec mysql (que tu trouvera sur la première page du site dans le menu de droite.
Si tu est très pressé je te conseil de t'offrir les Services d'un pro qui te fera cela rapidement j'en suis certain. Pour la requête il te faut utiliser les jointures et sûrement un group by.
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Ok! merci beaucoup. Je comprend j'ai juste tenté la chance qu'il y'ait quelqu'un qui a déjà fait cette manipulation auparavant, et qu'il ne perdera pas de temps à me répondre!
Hors ligne
Hors ligne
Voila j pu avancé un petit peu mais j changé ma table au (ref, ref_pere, code, libelle, lft ( si on considere l'arrborescence on donne un nombre a gauche de chaque donnée), rgt( de mm a sa droite) pour l'affichage j'ai pu enfin l'afficher comme je voulais grace a ce code:
<?php
$db = mysql_connect("localhost", "root", "");
mysql_select_db("test",$db);
echo '<hr>';
function display_mptt($root) {
$result = mysql_query('SELECT * FROM indicateur '.
'WHERE ref="'.$root.'";');
$row = mysql_fetch_array($result);
$right = array();
$result = mysql_query('SELECT * FROM indicateur '.
'WHERE lft BETWEEN '.$row['lft'].' AND '.
$row['rgt'].' ORDER BY lft ASC;');
while ($row = mysql_fetch_array($result)) {
if (count($right)>0) {
while ($right[count($right)-1]<$row['rgt']) {
array_pop($right);
}
}
echo str_repeat(' ',count($right)).$row['code'].$row['libelle']."<br>";
$right[] = $row['rgt'];
}
}
display_mptt(1);
?>
on aurait come resultat a l'affichage:
0indicateur
1environnement
11demographie
111pop-tot
112pop_fem
113pop_15
12geographie
121superficie
2acteur
voilà maintenant mon problème reside sur la fonction ajouter j'ai cherché un petit peu mais je reussi pas a l'executer on me lance la faute suivante:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 572 bytes) pourtant j'ai modifié memory_limit sur php.ini ainsi que le temps d'execution mais ca ne marche pas et voilà mon code:
<?php
$db = mysql_connect("localhost", "root", "");
mysql_select_db("test",$db);
echo '<hr>';
function rebuild_tree($ref_pere, $left) {
$right = $left+1;
$result = mysql_query('SELECT libelle FROM indicateur '.
'WHERE ref_pere="'.$ref_pere.'";');
while ($row = mysql_fetch_array($result)) {
$right = rebuild_tree($row['libelle'], $right);
}
mysql_query('UPDATE libelle SET lft='.$left.', rgt='.$right.' WHERE ref_pere="'.$ref_pere.'";');
return $right+1;
}
rebuild_tree(3,2)
?>
Dernière modification par nom (27-07-2010 04:07:32)
Hors ligne
Pages :: 1