Charger données d'une base données dans un formulaire en php

Fermé
Glo10 - 9 déc. 2020 à 13:45
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 9 déc. 2020 à 16:15
Bonjour à tous
Je suis en train de travail sur une application web mais suis bloqué quand j’ai voulu récupérer mes données dans la base de données et les charger dans un formulaire à l’aide de <select> .

include("../models/chaine.php");
$req1="SELECT LibelleInfract from infraction ";
$resulta=$db->query($req1);
$donn=$resulta->fetch(PDO::FETCH_ASSOC);

<select class="liste_infract" name="listeInfraction" size="5" required="required" multiple>
<option value="00">Sélectionnez les infractions</option>
<?php
foreach ($donn as $val) {
# code...
echo "<option>".$val."</option><br>";
}
?>
</select>

Au lieu que ça de charger tous les éléments, il charge seulement le premier élément.

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 9 déc. 2020 à 15:47
Bonjour,

Déjà, Pour poster ton code sur le forum, tu dois utiliser les BALISES DE CODE.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Ensuite, vu que travailles en PDO, pense à gérer les éventuelles erreurs liées aux requêtes
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Puis, juste après ton fetchAll, fais donc un print_r de ta variables pour voir ce qu'elle contient.
echo "<pre>";
print_r($donn);
echo "</pre>";


Il serait pas mal également que tu t'assures qu'en BDD tu as bien les mêmes résultats (en testant ta requête DIRECTEMENT dans ta bdd (via l'onglet "requete" de ton phMyadmin ))

A priori, rien, dans ton code actuel, ne "limiterait" le nombre de données affichées...

Juste par précaution, tu pourrais ajouter un htmlspecialchars dans ta boucle ( au cas où tu aurais des données contenant des caractères spéciaux et/ou des apostrophes )
<select class="liste_infract" name="listeInfraction" size="5" required="required" multiple>
  <option value="00">Sélectionnez les infractions</option>
  <?php
  foreach ($donn as $val) {
     echo "<option value='".htmlspecialchars ($val['LibelleInfract'])."'>".htmlspecialchars ($val['LibelleInfract'])."</option>";
  }
  ?>
</select>


EDIT : Correction $val['LibelleInfract']

0
Merci beaucoup après l'affichage à l'aide de <pre>, j'ai peu constater que $donn contient qu'un seul élément. Maintenant comment ferai-je pour charger l'ensemble des données ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
9 déc. 2020 à 15:16
Au lie de faire un fetch, fais un fetchAll
0
Glo10 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
9 déc. 2020 à 15:24
Merci Jordan45.
Je crois que j'approche la solution. J'ai fait FetchAll et au lieu d'afficher les éléments mais ça affiche le tableau Array au tant de fois (selon le nombre d'éléments dans ma base).
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Glo10
9 déc. 2020 à 15:46
Oui, je n'ai pas pensé à te le corriger
c'est
$val['LibelleInfract']

qu'il faut utiliser
0
Glo10 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
9 déc. 2020 à 16:02
D'accord
Je remarque que les Array changent à des lignes qui contiennent des données cependant, ces ligne sont vides.
Je ne sais pas si j'ai mal utilise écho ou quoi.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Glo10
9 déc. 2020 à 16:15
Ben... sans voir ce que tu as écrit.... impossible de te répondre !
0