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   -
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...

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
  2. emrh Messages postés 439 Statut Membre 20
     
    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
  3. emrh Messages postés 439 Statut Membre 20
     
    Merci Jordane pour cette confirmation et cette info, je vais jeter un œil tout de suite !
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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