Affichage des données de la BDD dans un tableau

Résolu/Fermé
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - Modifié le 4 déc. 2019 à 14:06
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 4 déc. 2019 à 17:38
Bonjour,
je cherche à afficher les noms, prenoms et resultats d'une personne dans un tableau

Voici le code PHP de la requête pour trouver les personnes ou élève:
  

<?php   

error_reporting ( E_ALL );
ini_set ( 'display_errors', TRUE );
ini_set ( 'display_startup_errors', TRUE );
    
$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;
$cycle = !empty ( $_GET['cycle'] ) ? $_GET['cycle'] : NULL;
$iduser = !empty ( $_SESSION['id'] ) ? $_SESSION['id'] : NULL;
$serie = !empty ( $_GET['serie'] ) ? $_GET['serie'] : NULL; 
    
//Recherche les noms et prenoms des élèves     
try
    {  
 $req = $bdd->prepare('SELECT * FROM eleve WHERE class = ? AND iduser = ? ORDER BY nom');
 
 $req->execute(array($class, $iduser));
    
 //Somme des élèves de la classe 
  }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }   
   ?>





Voici le code qui doit afficher le nom, prenom et resultat de chacun

 

<table >
     
<?php 
 $j=1;  
 $NbrCol = 10; 
     
echo '<tr>';  
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Nom</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>Prenom</strong></strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Resultat</strong>'; echo '</th>';  
echo '</tr>';     

 
 
 while($donnees =  $req->fetch()){
  
 if ( ($j<=$NbrCol) )  
{  
echo '<tr>';  
    
echo '<td>'; echo $j;  echo '</td>';  
   
 echo '<td>'; echo ''.$donnees['nom'].'';  echo '</td>';  
   
echo '<td>'; echo ''.$donnees['prenom'].''; echo '</td>'; 
   
echo '<td>';  
 $req3 = $bdd->prepare('SELECT * FROM moyenne WHERE ideleve = ?');
$req3->execute(array($donnees['ideleve'])); $donne = $req3->fetch();
 
  echo ''.$donne['moye'].''; echo '</td>';
  
echo '</tr>'; 
 } 
$j++;  
 }  
  
?> 
</table> 



EDIT : Correction des balises de code ( ton langage c'est le PHP ... il ne faut donc pas choisir le BASIC !!! )


Le tableau est censé afficher le nom, prenom (qui sont dans une table de la BDD) puis le resultat( qui sont dans une autre table qui est liée à la table des personnes) de la personne dans le nom, prénom sont affichés. ce que je constate c'est qu'il n'affiche que le nom et prénom pas le resultat.

Quelqu'un peut-il m'aidé? comment faire pour qu'il affiche le nom, prenom et resultat ?

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 déc. 2019 à 14:16
Bonjour,

Quand tu postes du code php ... dans les balises de code, tu dois choisir le langage PHP .....

Sinon.. sais tu ce qu'est une JOINTURE dans une requete SQL ??

Essaye ça :
 <?php 
error_reporting ( E_ALL );
ini_set ( 'display_errors', TRUE );
ini_set ( 'display_startup_errors', TRUE );
    
$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;
$cycle = !empty ( $_GET['cycle'] ) ? $_GET['cycle'] : NULL;
$iduser = !empty ( $_SESSION['id'] ) ? $_SESSION['id'] : NULL;
$serie = !empty ( $_GET['serie'] ) ? $_GET['serie'] : NULL; 
    
//Recherche les noms et prenoms des élèves
 $sql = "SELECT E.* 
         FROM eleve E
         LEFT JOIN moyenne M ON M.ideleve = E.ideleve
         WHERE E.class = ? 
         AND E.duser = ? 
         ORDER BY E.nom";
 $datas = array($class, $iduser);
 
  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());
  }   
  
  
  //juste le temps de debuguer...
  printr_($donnees);
  ?>
  
  


 <table>
  <thead>
  <?php
  echo '<tr>';  
  echo '<th><strong>#</strong></th>'; 
  echo '<th><strong>Nom</strong></th>'; 
  echo '<th><strong><strong>Prenom</strong></th>'; 
  echo '<th><strong>Resultat</strong></th>';  
  echo '</tr>';  
  ?>
  </thead>
  <tbody>
 <?php
   
  if(!empty($donnees)){
    foreach($donnees as $j=>$D){
      echo '<tr>';  
      echo '<td>' .$j .'</td>';  
      echo '<td>'.$D['nom']. '</td>';  
      echo '<td>'.$D['prenom'].'</td>'; 
      echo '<td>'.$D['moye'].'</td>'; 
      echo '</tr>'; 
    }
  }
 ?>
  </tbody>
 </table> 
 

0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
4 déc. 2019 à 15:10
"Notice: Undefined index: moye in /Applications/MAMP/htdocs/kela/resulta-list.php on line 176 ""

Voilà l'erreur qu'il me renvoie, en lisant le code que tu m'as proposé, il n'ya aucune part où tu accède à la table Moyenne pour recupérer la moyenne de la personne X

Ce qui est vrai je n'avais pas pensée à la JOINTURE
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
4 déc. 2019 à 16:56
Un oublie dans la requête
ll faut la modifier comme ceci
 $sql = "SELECT E.* , M.*
         FROM eleve E
         LEFT JOIN moyenne M ON M.ideleve = E.ideleve
         WHERE E.class = ? 
         AND E.duser = ? 
         ORDER BY E.nom";
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
4 déc. 2019 à 17:38
Merci beaucoup, ça marché
0