IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Retour de booleen [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut Retour de booleen
    Bonjour,

    Lorsque j'effectue une requete de selection sur des tables contenant des booleens,
    ces dits booleens sont retournes sous la forme 'f' ou 't'.

    Je voulais savoir si il n'exsitait pas une configuration a setter ou quelque dans le genre pour recuperer un vrai booleen et pas un char que je suis oblige de tester a chaque retour de mon selec.

    Merci d'avance.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Le retour du booléen chez PostgreSQL est le f ou t, mais dans tes requêtes tu peux utiliser la norme SQL TRUE ou FALSE de même que les caractère suivants

    Code TRUE : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TRUE
    't'
    'true'
    'y'
    'yes'
    '1'

    Code FALSE : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FALSE
    'f'
    'false'
    'n'
    'no'
    '0'

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    A la rigueur, tu peux définir une fonction qui fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function toBool($value) {
        switch($value) {
            case "true":
            case "t":
            case "y":
            case "yes":
            case "1":
            case 1:
            case true:
                return true;
            case "false":
            case "f":
            case "0":
            case 0:
            case "n":
            case "no":
            case false:
            default:
                return false;
        }
    }
    Mais il y a peut-être plus propre...

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    OMG ! Ce que c'est laid

    Bon bah je vous remercie des reponses...

    Ahhhh mais y'a une raison pour que ca retourne t ou f ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Il y a aussi une solution qui peut s'utiliser directement dans la requête. Quelque chose du genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT   champ,
             CASE WHEN champ='t' THEN 'true'
                  ELSE 'false'
             END
      FROM   ma_table;

    Ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     champ | case
    -------+-------
     t     | true
     f     | false
    Si ça te convient mieux...

    Pour plus d'infos, tu as la doc de Postgresql :


    Après, je ne sais pas si c'est plus propre...

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    A la limite je prefere faire bosser mon serveur posgres plutot que mon php qui est deja pas mal sollicite.
    Ca va allourdir un peu plus la syntaxe mais bon...

    Merci pour les liens et les reponses, c'est sympa.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Relance du sujet :p
    Bonjour =)


    J'ai lu tout ça et c'est ok :p Postgre retourne t ou f, et je l'ai constater il n'y a pas longtemps.
    Mais récemment il me retourne une valeur NULL que se soit pour un False ou un True...

    Voici mon code PhP qui utilise le booléen:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
        echo'    <tr>
    		<th>Is Contact</th>
    		<th colspan="3">
    			<select id="" name="is_contact">
    				<option ';
     
    					if( !$rec['is_contact'] )
    					{
    						echo'selected="selected" ';
    					}
     
    					echo ' value="FALSE">No</option>
    					<option ';
     
    					if( $rec['is_contact'] )
    					{
    						echo'selected="selected" ';
    					}
     
    					echo ' value="TRUE">Yes</option>
    				</select></th></tr>'; ?>
    et ci dessous ma requette SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $SQL ='SELECT 		      	aa_clients.is_contact
    	     FROM 		                aa_clients';
    $q = new query($DB,$SQL);
     
    // petite vérification qui affiche la valeur de is_client et son type
    echo $rec['is_contact'] . '  -> ' gettype($rec['is_contact']); ?>
    et pour finir le code généré par le serveur :p (rololo sa en fait du beau code tout ça x) ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       -> NULL
     
      <tr> 
    	<th>Is Contact</th> 
    		<th colspan="3"> 
    			<select id="" name="is_contact"> 
    				<option  value="FALSE">No</option> 
    				<option selected="selected"  value="TRUE">Yes</option> 
    			</select></th></tr>
    Comme vous pouvez le constater j'utilise ma variable dans un select afin d'y faire apparaitre l'option selctionné...

    Je suis un peu perdu là depuis ce matin je cherche comment vérifier si intel ou intel est False ou True, et là je constate que le serveur me refile une valeur NULL... pourtant la colone dans la BDD est bien du type boolean.

    Très reconnaissant de vos réponses et propositions je vous remercie d'avance

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    D'où vient cette variable

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $SQL ='SELECT 		      	aa_clients.is_contact
    	     FROM 		                aa_clients';
    $q = new query($DB,$SQL);
    $rec = $q->getrow() ;		
    // petite vérification qui affiche la valeur de is_client et son type
    echo $rec['is_contact'] . '  -> ' gettype($rec['is_contact']); ?>
    ... je suis confus --' je boss tellement sur ce code que je fais des erreur totalement nul!

    $rec = $q->getrow() ; était placé en dessous de mon echo... forcement qu'il était nul!

    Enfin au final je confirme bien que le serveur renvois f ou t du type String

    Je te remercie de ta remarque cela m'a permis de corriger mon erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if( $rec['is_contact'] == 'f' )
    {
    	echo'selected="selected" ';
    }
     
    if( $rec['is_contact'] == 't' )
    {
    	echo'selected="selected" ';
    }
    * ème fois que je poste sur le forum, et 2eme foi qu'il s'agit d'une erreur toute bête x)*

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Langue du retour booleen
    Par scfi1 dans le forum Développement
    Réponses: 6
    Dernier message: 02/05/2011, 17h26
  3. retour de is_string pas booleen
    Par bruno.rotrou dans le forum Langage
    Réponses: 4
    Dernier message: 18/07/2009, 10h03
  4. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55
  5. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo