Remplir un array avec les résultats d'une requête
Résolu
emrh
Messages postés
439
Statut
Membre
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Est-ce la bonne méthode pour remplir un tableau avec des valeurs en provenance d'une base de
données ?
(J'ai l'impression que ces qq lignes ne font pas très pro... Au départ j'avais écrit ma boucle avec
une variable $i =1 et dans la boucle un $i = $i + 1 pour renseigner $libelle[$i] = $valeur['designation'];)
Merci d'avance pour vos conseils...
Ensuite, le "problème" c'est que pour récupérer le bon libellé, je suis obligé de faire ça ;
EDIT : À l'avenir, l'utilisateur peut être amené à supprimer une prestation à condition que son id_prestation (clé étrangère) ne soit pas utilisée dans une autre table. Je voudrais donc pour sécuriser mes données affecter dans mon array le bon id_prestation à la bonne désignation. Je ne sais pas comment faire...
Est-ce la bonne méthode pour remplir un tableau avec des valeurs en provenance d'une base de
données ?
(J'ai l'impression que ces qq lignes ne font pas très pro... Au départ j'avais écrit ma boucle avec
une variable $i =1 et dans la boucle un $i = $i + 1 pour renseigner $libelle[$i] = $valeur['designation'];)
Merci d'avance pour vos conseils...
// On récupère les désignations des prestations :
$req_designations = $bdd->query('SELECT designation FROM prestations');
$prestations = $req_designations->fetchAll();
// Affectation des libellés récupérés dans un tableau $libelle
$libelle=array();
foreach($prestations as $valeur) {
$libelle[] = $valeur['designation'];
}
Ensuite, le "problème" c'est que pour récupérer le bon libellé, je suis obligé de faire ça ;
<h3>Prestations : </h3>
<?php
foreach ($data_prestations as $valeur2) {
echo $libelle[$valeur2['id_prestation']-1];
}
EDIT : À l'avenir, l'utilisateur peut être amené à supprimer une prestation à condition que son id_prestation (clé étrangère) ne soit pas utilisée dans une autre table. Je voudrais donc pour sécuriser mes données affecter dans mon array le bon id_prestation à la bonne désignation. Je ne sais pas comment faire...
3 réponses
-
Bonjour
Ton code est correct mais tu pourrais te passer de ces quelques lignes$libelle=array(); foreach($designations as $valeur) { $libelle[$valeur['id_prestation']] = $valeur['designation']; }
Pour ca, renseignes toi sur les différents modes de ferch qui existent.
(Par exemple PDO::FETCH_UNIQUE)
https://phpdelusions.net/pdo/fetch_modes#FETCH_UNIQUE
-
Après plusieurs tentatives et nombreux tests, j'ai trouvé ça qui semble fonctionner :
// On récupère les désignations des prestations : $req_prestations = $bdd->query('SELECT * FROM prestations'); $designations = $req_prestations->fetchAll(); // Affectation des libellés récupérés dans un tableau $libelle $libelle=array(); foreach($designations as $valeur) { $libelle[$valeur['id_prestation']] = $valeur['designation']; }
<h3>Prestations : </h3> <?php foreach ($data_prestations as $valeur2) { echo $libelle[$valeur2['id_prestation']]; echo $valeur2['prix']; echo $valeur2['quantites'] . '<br>'; } ?>
Mon code vous semble correct ? -
Merci Jordane pour cette confirmation et cette info, je vais jeter un œil tout de suite !
-
Je viens de relire ton code complet ..
En fait ...$req_prestations = $bdd->query('SELECT * FROM prestations'); $designations = $req_prestations->fetchAll();
<?php foreach ($designations as $valeur2) { echo $valeur2['id_prestation']; echo $valeur2['designation']; echo $valeur2['prix']; echo $valeur2['quantites'] . '<br>'; } ?>
-