Affichage dynamique de plusieurs donnée (par matière) dans un tableau

Résolu
modemo2018 Messages postés 254 Statut Membre -  
modemo2018 Messages postés 254 Statut Membre -
Bonjour, je voudrai affiché plusieurs matières de classe avec chacune des matières plusieurs notes
voici le code PHP de la partie requête:

  
?php   
 
 //début de ton fichier php .... ça veut dire .. DEBUT !!!:
error_reporting ( E_ALL );
ini_set ( 'display_errors', TRUE );
ini_set ( 'display_startup_errors', TRUE );
         
$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;     
$nom = !empty ( $_GET['nom'] ) ? $_GET['nom'] : NULL;
$prenom = !empty ( $_GET['prenom'] ) ? $_GET['prenom'] : NULL;
$cycle = !empty ( $_GET['cycle'] ) ? $_GET['cycle'] : NULL;    
$ideleve = !empty ( $_GET['ideleve'] ) ? $_GET['ideleve'] : NULL;      
$iduser = !empty ( $_SESSION['id'] ) ? $_SESSION['id'] : NULL;
    
$typenote1 = 'Note de devoir'; 
$typenote2 = 'Note de composition'; 
    
   

 $sql = "SELECT E.* , M.*
         FROM note E
         LEFT JOIN matiere M ON M.idmat = E.idmat
         WHERE E.typenote = ? AND E.ideleve = ?";
 $datas = array($typenote1, $ideleve);
 
  try {  
    $req = $bdd->prepare($sql);
    $req->execute($datas);
    $donnees = $req->fetchAll(); //on stocke le resultat de la requete dans un ARRAY
  } catch(Exception $e){
      die('Erreur : '.$e->getMessage());
  }   
       
?>




Voici le tableau

 
 <table> 
<thead>
 
<?php 
  echo '<tr>';  
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Matière</strong>'; echo '</th>'; 
echo '<th colspan="';?> <?php echo $id;?>  <?php echo ' ">'; echo '<strong>Note de classe</strong>'; echo '</th>'; 
//echo '<th>'; echo '<strong>Note de composition</strong>'; echo '</th>'; 
//echo '<th>'; echo '<strong>Moyenne(matière)</strong>'; echo '</th>'; 
  echo '</tr>';  
  ?>
  </thead>
  <tbody>
 <?php
    
      echo '<tr>';
  
  if(!empty($donnees)){
    foreach($donnees as $j1=>$D){
 echo '<td>'.$j1.'</td>'; 
    echo '<td>'.$D['nomat'].'</td>';  
 echo '<td>'.$D['notemat']. '</td>';  
  } }
    echo '</tr>';
 //while(($do1 =  $req4->fetch())) {  echo '<td>'.$do1['notemat'].'</td>';} 
  
 //echo '<td>'.$id.'</td>';   
 
 ?>
  </tbody>
 </table> 

</div>
</div>
        


 


voici la capture après l'execution



En faite je veux en fait que chaque matière soit affiché en ayant ses notes sur sa ligne
Quelqu'un peut-il m'aidé SVP?

3 réponses

  1. jee pee Messages postés 9444 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    Bonjour,

    Il faut que la balise ROW soit dans la boucle, pas en dehors

          echo '<tr>';
      
      if(!empty($donnees)){
        foreach($donnees as $j1=>$D){
     echo '<td>'.$j1.'</td>'; 
        echo '<td>'.$D['nomat'].'</td>';  
     echo '<td>'.$D['notemat']. '</td>';  
      } }
        echo '</tr>';


    mettre quelque chose comme

      if(!empty($donnees)){
        foreach($donnees as $j1=>$D){
        echo '<tr>';
        echo '<td>'.$j1.'</td>'; 
        echo '<td>'.$D['nomat'].'</td>';  
        echo '<td>'.$D['notemat']. '</td>';  
        echo '</tr>'; 
      } }


    0
    1. modemo2018 Messages postés 254 Statut Membre 2
       



      Voilà ce qui s'affiche, en faite au lieu que la matière s'affiche deux fois je veux qu'elle s'affiche qu'une seule fois et que les notes de chaque matière s'aligne
      0
  2. modemo2018 Messages postés 254 Statut Membre 2
     
    En fait aulieu d'afficher deux fois la matière, j'ai envie que la matière s'affiche qu'1e seule fois et que les notes s'étales, j'essai plusieurs manières mais je n'arrive pas, quelqu'un peut-il m'aidé?
    0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    J'ai l'impression que tu nous reposes toujours les mêmes questions....
    A croire que d'une réponse à une autre tu n'es pas capable d'appliquer ce qui t'a déjà été expliqué.

    Bref,
    Prenons ton code et fabriquons un array plus adapté à tes besoins à partir des données issues de ta bdd-

    Par exemple :
    <?php   
     
     //début de ton fichier php .... ça veut dire .. DEBUT !!!:
    error_reporting ( E_ALL );
    ini_set ( 'display_errors', TRUE );
    ini_set ( 'display_startup_errors', TRUE );
             
    $class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;     
    $nom = !empty ( $_GET['nom'] ) ? $_GET['nom'] : NULL;
    $prenom = !empty ( $_GET['prenom'] ) ? $_GET['prenom'] : NULL;
    $cycle = !empty ( $_GET['cycle'] ) ? $_GET['cycle'] : NULL;    
    $ideleve = !empty ( $_GET['ideleve'] ) ? $_GET['ideleve'] : NULL;      
    $iduser = !empty ( $_SESSION['id'] ) ? $_SESSION['id'] : NULL;
        
    $typenote1 = 'Note de devoir'; 
    $typenote2 = 'Note de composition'; 
        
       
    
     $sql = "SELECT E.* , M.*
             FROM note E
             LEFT JOIN matiere M ON M.idmat = E.idmat
             WHERE E.typenote = ? AND E.ideleve = ?";
     $datas = array($typenote1, $ideleve);
     
      try {  
        $req = $bdd->prepare($sql);
        $req->execute($datas);
        $donnees = $req->fetchAll(); //on stocke le resultat de la requete dans un ARRAY
      } catch(Exception $e){
          die('Erreur : '.$e->getMessage());
      }  
    
    
      //pour réorganiser par matière, tu peux :
      $arrNotesMatiere = array();
      if(!empty($donnees)){
        foreach($donnees as $D){
           $arrNotesMatiere[$D['nomat']][] = $D['notemat'];
        }
      }
           
    ?>
    

    Et ensuite, pour l'affichage
    if(!empty($arrNotesMatiere)){
        foreach($arrNotesMatiere as $matiere=>$notes){
        echo '<tr>';
          echo '<td>'.$matiere.'</td>';  
          echo '<td>';
          if(!empty($notes)){
            foreach($notes as $N ){ 
            echo $N . " ";  // affichage de la note
          }
          echo '</td>';
        echo '</tr>'; 
      } 
    }
    
    

    0
    1. modemo2018 Messages postés 254 Statut Membre 2
       
      c'est au niveau de l'affichage au tableau que j'ai un peu des difficulté
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > modemo2018 Messages postés 254 Statut Membre
         
        oui et ?
        Tu as testé le code que je t'ai donné ???
        Tu peux expliquer en détail ce qui ne te conviens pas dans ce code ?
        0
    2. modemo2018 Messages postés 254 Statut Membre 2
       
      MERCI BEAUCOUP, ÇA MARCHÉ COMME JE LE SOUHAITAIS
      0