PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 24-07-2010 20:16:15

nom
Membre
Inscription : 24-07-2010
Messages : 8

fonction afficher sur PHP

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

#2 25-07-2010 10:08:23

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : fonction afficher sur PHP

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

#3 25-07-2010 14:57:07

nom
Membre
Inscription : 24-07-2010
Messages : 8

Re : fonction afficher sur PHP

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

#4 26-07-2010 23:27:01

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : fonction afficher sur PHP

Tout le monde ou presque a fait une jointure sur deux tables ensuite il faut bien faire le changement de titre du menu ....

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#5 27-07-2010 04:03:54

nom
Membre
Inscription : 24-07-2010
Messages : 8

Re : fonction afficher sur PHP

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

#6 27-07-2010 09:29:18

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : fonction afficher sur PHP

Pourquoi faire tant de requêtes ? Tu en fais une récupérant le tout et tu créés ton arbre à partir de ce que tu as récupéré. hmm

Hors ligne

Pied de page des forums