Affichage des données de la BDD dans un tableau [Résolu]

Messages postés
45
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
6 décembre 2019
-
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 ?
Afficher la suite 

1 réponse

Messages postés
26969
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 décembre 2019
1918
0
Merci
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> 
 

modemo2018
Messages postés
45
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
6 décembre 2019
-
"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
jordane45
Messages postés
26969
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 décembre 2019
1918 > modemo2018
Messages postés
45
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
6 décembre 2019
-
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";
modemo2018
Messages postés
45
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
6 décembre 2019
-
Merci beaucoup, ça marché
Commenter la réponse de jordane45