[RESOLU] dupplication de donnée récupérer de ma bdd

Eléphant du PHP | 89 Messages

22 oct. 2022, 23:13

Bonsoir, j'ai un problème avec ma récupération de donnée de ma BDD voilà dès que j'ai plusieurs compétences de valider je me met à avoir mon appréciation qui se démultiplie. Savez vous comment faire pour l'éviter ? (dsl ce n'est absolument pas clair mais voilà le code de la page et le résultat de ce qui est obtenu par un var_dump($appreciation)

Code : Tout sélectionner

<?php $eleven = $_POST['submit']; $sth = $db->prepare(' SELECT e.id, e.nom, e.classe, c.id as idCompetence, c.nom as nomCompetence, c.image_path as imageCompetence, cat.id as idCategorie, cat.nom as nomCategorie, ea.appreciation as Appreciation FROM eleve e LEFT JOIN eleve_competence ec ON ec.eleve_id = e.id LEFT JOIN competence c ON c.id = ec.competence_id LEFT JOIN categorie_competence cat ON cat.id = c.categorie_competence_id LEFT JOIN eleve_appreciation ea ON ea.eleve_id = e.id WHERE e.nom = :eleven '); $sth->execute(['eleven' =>$eleven]); // Récupération de toutes les lignes d'un jeu de résultats $results = $sth->fetchAll(); foreach($results as $result) $classe = $result['classe']; $competences = []; foreach ($results as $row) { if (!array_key_exists($row['nomCategorie'], $competences)) { $competences[$row['nomCategorie']] = []; } $competences[$row['nomCategorie']][] = $row; } $competencef =""; foreach ($competences as $competenceLabel => $competenceRows): $competencef .= "<h3><b><i>$competenceLabel</i></b></h3>"; foreach ($competenceRows as $competence): if (!empty($competence['imageCompetence'])){ $catcompetence = $competence['imageCompetence']; } $competencef .= "<blockquote>".ucfirst($competence['nomCompetence']). "&nbsp;"."&nbsp;"."&nbsp;"."&nbsp;"."<img src=$catcompetence width='150'>"."</blockquote>" ; endforeach; endforeach; $appreciation = ""; if(isset($result['Appreciation'])){ foreach ($results as $appreciation): var_dump($appreciation); //$appreciation .= "<blockquote>".$result['Appreciation']."<br></blockquote>"; endforeach; } die;
C:\wamp64\www\sdz\demo\observer\pdf\recuparation_bdd.php:50:
array (size=18)
'id' => string '6' (length=1)
0 => string '6' (length=1)
'nom' => string 'Albert' (length=6)
1 => string 'Albert' (length=6)
'classe' => string 'Gs' (length=2)
2 => string 'Gs' (length=2)
'idCompetence' => string '3' (length=1)
3 => string '3' (length=1)
'nomCompetence' => string 'savoir parler' (length=13)
4 => string 'savoir parler' (length=13)
'imageCompetence' => string 'upload/63545513b3a09banniere.jpg' (length=32)
5 => string 'upload/63545513b3a09banniere.jpg' (length=32)
'idCategorie' => string '1' (length=1)
6 => string '1' (length=1)
'nomCategorie' => string 'Mobiliser le langage dans toutes ses dimensions' (length=47)
7 => string 'Mobiliser le langage dans toutes ses dimensions' (length=47)
'Appreciation' => string 'Bon élève !' (length=13)
8 => string 'Bon élève !' (length=13)

C:\wamp64\www\sdz\demo\observer\pdf\recuparation_bdd.php:50:
array (size=18)
'id' => string '6' (length=1)
0 => string '6' (length=1)
'nom' => string 'Albert' (length=6)
1 => string 'Albert' (length=6)
'classe' => string 'Gs' (length=2)
2 => string 'Gs' (length=2)
'idCompetence' => string '5' (length=1)
3 => string '5' (length=1)
'nomCompetence' => string 'savoir dessiner' (length=15)
4 => string 'savoir dessiner' (length=15)
'imageCompetence' => string 'upload/635456458a2e8birthday-glyph-icon-silhouette-symbol-260nw-768772582.jpeg' (length=78)
5 => string 'upload/635456458a2e8birthday-glyph-icon-silhouette-symbol-260nw-768772582.jpeg' (length=78)
'idCategorie' => string '3' (length=1)
6 => string '3' (length=1)
'nomCategorie' => string 'Agir, s'exprimer, comprendre à travers l'éducation artistique' (length=63)
7 => string 'Agir, s'exprimer, comprendre à travers l'éducation artistique' (length=63)
'Appreciation' => string 'Bon élève !' (length=13)
8 => string 'Bon élève !' (length=13)

Mammouth du PHP | 2703 Messages

22 oct. 2022, 23:18

ne pas faire une seule requête, mais faire une requête pour les données de l'élève, une pour ces compétences, une pour ces appréciations.

Eléphant du PHP | 89 Messages

22 oct. 2022, 23:35

ne pas faire une seule requête, mais faire une requête pour les données de l'élève, une pour ces compétences, une pour ces appréciations.
Donc il faut que je fasse

Code : Tout sélectionner

$query = $db->prepare(' SELECT ea.appreciation as Appreciation FROM eleve_appreciation WHERE ea.id = :idea '); $query->execute(['idea' => $id]); $nice = $sth->fetchAll();
J'ai mis

Code : Tout sélectionner

$id = $result['id'];
juste après le

Code : Tout sélectionner

$classe = $result['classe'];
du code premier message

ai-je fais quelque chose de travers pour le moment ?

Eléphant du PHP | 89 Messages

23 oct. 2022, 01:33

C'est bon tout marche parfaitement merci pour ton aiguillage dans mon problème