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

Résolu/Fermé
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - Modifié le 19 déc. 2019 à 12:38
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 20 déc. 2019 à 17:09
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?
A voir également:
  • Es données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse.
  • Tableau croisé dynamique - Guide
  • Tableau ascii - Guide
  • Tableau word - Guide
  • Trier tableau excel - Guide
  • Fichier rar - Guide

3 réponses

jee pee Messages postés 40472 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 novembre 2024 9 428
19 déc. 2019 à 12:46
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
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
19 déc. 2019 à 14:52



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
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
20 déc. 2019 à 10:24
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
jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
20 déc. 2019 à 11:08
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
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
20 déc. 2019 à 12:21
c'est au niveau de l'affichage au tableau que j'ai un peu des difficulté
0
jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
20 déc. 2019 à 12:26
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
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
20 déc. 2019 à 17:09
MERCI BEAUCOUP, ÇA MARCHÉ COMME JE LE SOUHAITAIS
0