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

Signaler
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020
-
modemo2018
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020
-
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

Messages postés
27922
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
27 janvier 2020
5 871
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>'; 
  } }


modemo2018
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020




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
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020

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é?
Messages postés
27369
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2020
2 048
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>'; 
  } 
}


modemo2018
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020

c'est au niveau de l'affichage au tableau que j'ai un peu des difficulté
jordane45
Messages postés
27369
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2020
2 048 > modemo2018
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020

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 ?
modemo2018
Messages postés
88
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
21 janvier 2020

MERCI BEAUCOUP, ÇA MARCHÉ COMME JE LE SOUHAITAIS