Tableau dynamique en php

lettywan -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

Je voudrais afficher dynamiquement un tableau en php a partir de requetes sql.

Je m'explique:

Ma premiere requete cherche des données dans une table "jour_semaine "(num_jour_semaine;jour)

Ma deuxieme requete cherche des données dans une table "agent" (num_agent;nom_agent)

Ma troisieme requete cherche des données dans une table "donnees" (num_saisiedonnees;num_jour_semaine;num_agent;saisie)

Donc je voudrais afficher :
- en colonne les jours => resultat de ma premiere requete
- en ligne le nom de l'agent et la valeur saisie

Quelqu'un peut il m'aider.

Merci par avance

7 réponses

  1. DasSium95 Messages postés 741 Statut Membre 135
     
    tu dois mettre ton résultat de requête sous forme de tableau et ensuite faire un for dans lequel tu écris le code qui permet de créer une de ton tableau. un l'intérieur a l'intérieur de tes echo"<th>" echo"</td>" tu met la valeur i de ton tableau contenant le résultat de ta requête.

    j'ai pas précisé mais le for parcours le tableau contenant le résultat
    0
  2. lettywan
     
    Bonjour DasSium95 .

    Merci pour ta réponse rapide.

    Faut il que je fasse 3 boucles For ? (une par requete ?).
    0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    quand il parle de tableau c'est d'un array (a plusieurs dimensions)

    à chaque requette tu fais une boucle while pour empiler les valeurs dans l'array

    et ensuite tu fais une boucle foreach sur le premier niveau de l'array (les jours) et dans tes td affiches ensuite le deuxième niveau de l'array (agent, valeur)
    0
  4. lettywan
     
    Bonjour Alain_42.

    Merci pour ta réponse.

    Voila ce que j'ai commencé à faire.

    Est ce que je suis sur la bonne piste ?

    Merci
    0
    1. lettywan
       
      LE CODE:
      <?php
      //JOURS
      mysql_select_db($database_aquinet, $aquinet);
      $query_jours = "SELECT * FROM jour_semaine";
      $jours = mysql_query($query_jours, $aquinet) or die(mysql_error());
      $row_jours = mysql_fetch_assoc($jours);
      $totalRows_jours = mysql_num_rows($jours);
      $resultatJours=mysql_query($query_jours);

      for($j=0;$j<$totalRows_jours;$j++)
      {
      $listeJours[$j]['num_jour_semaine']=$row_jours['num_jour_semaine'];
      $listeJours[$j]['jour']=$row_jours['jour'];
      $listeJours[$j]['semaine']=$row_jours['semaine'];
      $row_jours = mysql_fetch_assoc($jours);
      }

      //AGENTS
      mysql_select_db($database_aquinet, $aquinet);
      $query_agent = "SELECT num_agent,nom_agent,prenom_agent FROM agent";
      $agent = mysql_query($query_agent, $aquinet) or die(mysql_error());
      $row_agent = mysql_fetch_assoc($agent);
      $totalRows_agent = mysql_num_rows($agent);
      $resultat=mysql_query($query_agent);

      for($a=0;$a<$totalRows_agent;$a++)
      {
      $listeAgent[$a]['num_agent']=$row_agent['num_agent'];
      $listeAgent[$a]['nom_agent']=$row_agent['nom_agent'];
      $listeAgent[$a]['prenom_agent']=$row_agent['prenom_agent'];
      $row_agent = mysql_fetch_assoc($agent);
      }

      mysql_select_db($database_aquinet, $aquinet);
      $query_donnees = "SELECT num_jour_semaine, num_agent, saisie FROM donnees";
      $donnees = mysql_query($query_donnees, $aquinet) or die(mysql_error());
      $row_donnees = mysql_fetch_assoc($donnees);
      $totalRows_donnees = mysql_num_rows($donnees);
      $resultatDonnees=mysql_query($query_donnees);

      for($d=0;$d<$totalRows_donnees;$d++)
      {
      $listeDonnees[$d]['num_saisiedonnees']=$row_donnees['num_saisiedonnees'];
      $listeDonnees[$d]['num_jour_semaine']=$row_donnees['num_jour_semaine'];
      $listeDonnees[$d]['num_agent']=$row_donnees['num_agent'];
      $listeDonnees[$d]['saisie']=$row_donnees['saisie'];
      $row_donnees = mysql_fetch_assoc($donnees);
      }
      ?>
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    qqs erreurs, ne pas faire plusieurs fois la selection base, plusieurs fois mysql_fetch_assoc sur l m^me query

    essayes comme ça:

    <?php  
    //connexion serveur puis..  
    mysql_select_db($database_aquinet, $aquinet); //il suffit de le faire une seule fois  
    //init de l'array  
    $listeJours=array();  
    //JOURS  
    
    $query_jours = "SELECT * FROM jour_semaine";  
    $jours = mysql_query($query_jours, $aquinet) or die(mysql_error());  
    
    //boucle while pour lire tous les enre trouvés, qui remplace tous les num_rows etc.. que tu avais mis  
    while($row_jours = mysql_fetch_assoc($jours)){  
     //l'index 1 ier niveau sera le num du jour de la semaine  
     $listeJours[$row_jours['num_jour_semaine']]['jour']=$row_jours['jour'];  
     $listeJours[$row_jours['num_jour_semaine']]['semaine']=$row_jours['semaine'];  
    }  
    
    //AGENTS  
    //correspondance entre num jour semaine et num_agent  
    $query_donnees = "SELECT num_jour_semaine, num_agent, saisie FROM donnees";  
    $donnees = mysql_query($query_donnees, $aquinet) or die(mysql_error());  
    
    while( = mysql_fetch_assoc($donnees)){  
     $listeJours[$row_donnees['num_jour_semaine']]['num_agent']=$row_donnees['num_agent'];  
     $listeJours[$row_donnees['num_jour_semaine']]['num_agent']['saisie']=$row_donnees['saisie'];  
    }  
    
    //on complete l'array avec les détails agent  
    foreach($listeJours as $num_jour_semaine=>$s_array){  
     $query_agent = "SELECT num_agent,nom_agent,prenom_agent FROM agent WHERE num_agent='".$s_array['num_agent']."'";   
     $agent = mysql_query($query_agent, $aquinet) or die(mysql_error());  
     $row_agent=mysql_fetch_assoc($agent); //pas de boucle car un seul agent pour ce num_agent  
     $listeJours[$num_jour_semaine][$s_array['num_agent']]['nom_agent']=$row_agent['nom_agent'];  
     $listeJours[$num_jour_semaine][$s_array['num_agent']]['prenom_agent']=$row_agent['prenom_agent'];  
    }  
    
     //TEST  
     //visualisation du contenu de l'array  
     echo '<pre>';  
     print_r($listeJours);  
     echo '</pre>';  
    
    
    
    
    
    mysql_close();  
    ?>
    0
  7. lettywan
     
    Merci Signaler Alain_42.

    Je vais regarder ca.
    0
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    a la réflexion il y a une autre solution purement sql avec le surnomage des tables et une requette sur les 3 tables a la fois

    <?php
    mysql_select_db($database_aquinet, $aquinet);
    $query="SELECT  d.num_jour_semaine as num_s,d.num_agent as num_a,d.saisie as sa,js.jour as j, js.semaine as sem,a.nom_agent as nom_a,a.prenom_agent as prenom_a FROM donnees d,jour_semaine js,agent a WHERE d.num_jour_semaine=js.num_jour_semaine AND d.num_agent=a.num_agent ORDER BY js";
    $result=mysql_query($query) or die ("Pb avec la requette: <br />".$query."<br />".mysql_error());
    echo '<table>';
    //lignbe des titres
    echo '<tr><th>Jour sem</th><th>num agent</th><th>Nom</th><th>Prenom</th><th>Saisie</th></tr>';
    //boucle
    while($row=mysql_fetch_assoc){
    	echo '<tr>';
    	echo '<td>'.$row['num_s'].'</td>';
    	echo '<td>'.$row['num_a'].'</td>';
    	echo '<td>'.$row['nom_a'].'</td>';
    	echo '<td>'.$row['prenom_a'].'</td>';
    	echo '<td>'.$row['sa'].'</td>';
    	echo '</tr>';
    }
    echo '</table>';
    ?>
    0