Affichage dynamique de plusieurs donnée (par matière) dans un tableau
Résolu
modemo2018
Messages postés
226
Date d'inscription
Statut
Membre
Dernière intervention
-
modemo2018 Messages postés 226 Date d'inscription Statut Membre Dernière intervention -
modemo2018 Messages postés 226 Date d'inscription Statut Membre Dernière intervention -
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?
A voir également:
- Es données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse.
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif ci-dessous. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. il manque 5 valeurs dans le tableau ci-dessous. retrouvez-les dans votre tableau, puis reportez-les arrondies à l’entier le plus proche. - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Fichier bin - Guide
3 réponses
Bonjour,
Il faut que la balise ROW soit dans la boucle, pas en dehors
mettre quelque chose comme
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 :
Et ensuite, pour l'affichage
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>'; } }
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