Requête PostgreSQL SELECT avec et sans ID

Résolu
ChiNoHikari Messages postés 6 Statut Membre -  
ChiNoHikari Messages postés 6 Statut Membre -
Bonjour, je souhaite faire une fonction PHP qui permet de récupérer tout les enregistrements d'une table selon l'identifiant d'un Pays donné via un formulaire. Toutefois l'utilisateur peut choisir d'afficher les résultats pour tout les pays, il n'y aura donc pas d'ID transmis à la fonction mais juste une valeur "Tout".

Ma question est: comment faire une seule requête capable de sélectionner aussi bien un pays en particulier (lorsque l'ID est envoyé) que de sélectionner tout les pays lorsque "Tout" est envoyé ?

J'ai essayé avec LIKE et le joker % mais sans succès.

2 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Tu pourrais nous donner le code de ta fonction, pour qu'on voie directement comment on peut l'adapter ?

    Xavier
    0
  2. ChiNoHikari Messages postés 6 Statut Membre
     
    Bonjour, merci pour votre aide .

    function database_select_country($country)
    {
    	//Connection à la base de données
            $bdd = database_connect();
    	
    	//Préparation de la requête
            $req = $bdd->prepare('SELECT  * FROM "public"."COUNTRY" WHERE "ID_COUNTRY" = '.$country.'');
            $req->execute(array()) or die(print_r($req->errorInfo()));	
    	
            return $req;
    }
    0
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      OK, donc le plus simple à mon avis serait de faire le test en php :
      function database_select_country($country)
      {
       //Connection à la base de données
              $bdd = database_connect();
      
              $texte_req = 'SELECT  * FROM "public"."COUNTRY"';
              if ($country != 'Tout')
                      $texte_req .= ' WHERE "ID_COUNTRY" = '.$country;
      
       //Préparation de la requête
              $req = $bdd->prepare($texte_req);
      
              $req->execute(array()) or die(print_r($req->errorInfo())); 
       
              return $req;
      }
      0
    2. ChiNoHikari Messages postés 6 Statut Membre
       
      Merci beaucoup !

      Sinon il n'existe pas de solution "joker" comme avec LIKE et % _ pour les ID ?
      0
    3. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Non, je ne vois pas.
      Éventuellement un truc comme ça, mais ça reporte le test sur la base sql :
      $req = $bdd->prepare("SELECT  * FROM \"public\".\"COUNTRY\" WHERE \"ID_COUNTRY\" = '$country' OR '$country' = 'Tout'");
      0
    4. ChiNoHikari Messages postés 6 Statut Membre
       
      Ok, encore une fois merci beaucoup !
      0