Remplir un array avec les résultats d'une requête

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - Modifié le 19 déc. 2021 à 09:50
jordane45 Messages postés 38316 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 novembre 2024 - 19 déc. 2021 à 16:35
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...

// 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...
A voir également:

3 réponses

jordane45 Messages postés 38316 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 novembre 2024 4 705
19 déc. 2021 à 10:40
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
1
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
19 déc. 2021 à 10:05
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 ?
0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
19 déc. 2021 à 16:27
Merci Jordane pour cette confirmation et cette info, je vais jeter un œil tout de suite !
0
jordane45 Messages postés 38316 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 novembre 2024 4 705
19 déc. 2021 à 16:35
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>';
}
?>
0