Affichage dynamique de plusieurs donnée (par matière) dans un tableau
Résolu
modemo2018
Messages postés
254
Statut
Membre
-
modemo2018 Messages postés 254 Statut Membre -
modemo2018 Messages postés 254 Statut Membre -
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:
Voici le tableau
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?
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
-
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>'; } }
-
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é?
-
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'affichageif(!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>'; } }
