Requête PostgreSQL SELECT avec et sans ID

Résolu
ChiNoHikari Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
ChiNoHikari Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

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

Xavier
0
ChiNoHikari Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   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
ChiNoHikari Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup !

Sinon il n'existe pas de solution "joker" comme avec LIKE et % _ pour les ID ?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   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
ChiNoHikari Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Ok, encore une fois merci beaucoup !
0