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

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

Messages postés
29600
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 septembre 2020
2 792
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> 
 

Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

"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
Messages postés
29600
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 septembre 2020
2 792 >
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

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";
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

Merci beaucoup, ça marché