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

Langage PHP Discussion :

Condition si NULL ou 0 sur un champ integer


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut Condition si NULL ou 0 sur un champ integer
    Bonjour,

    J'ai une variable $abs2 qui contient une valeur provenant d'un champ integer ou NULL est autorisé.

    J'aimerais afficher la valeur de $coef_abs2 si $abs2 est différent de NULL, mais ça ne fonctionne pas quand la valeur est égale à 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($abs2 != NULL) { $coef_abs2 = $t8['abs2']; } else { $coef_abs2 = ""; }
    Merci pour votre aide

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Bonjour,

    Peux-tu montrer un peu plus de code ? d'où viennent $abs2 et $t8 ?

    Et qu'est-ce qui ne marche pas ? Résultat attendu ? Résultat obtenu ?

    Avec on en saura plus pour t'aider...
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Il faudrait vérifier que la DB renvoie une valeur NULL au sens strict de PHP, ce dont je suis pas certain.

    Et dans ce cas, il te faut un test strict de la variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($abs2 !== NULL) { $coef_abs2 = $t8['abs2']; } else { $coef_abs2 = ""; }
    Pourfendeur de singletons en croisade

  4. #4
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    La solution de Petitbidon fonctionne.*

    La DB ne renvoie pas NULL mais " " (rien) quand le champ est NULL.

    je m'en sers tellement peut que j'avais oublié ce test : !==

    Merci à vous

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par arthuro45
    La DB ne renvoie pas NULL mais " " (rien) quand le champ est NULL.
    Ca ne me semble pas normal.

    De mon coté, j'utilise PDO, et les valeurs sont parfaitement respectées, donc si une donnée est NULL, Php stockera une valeur NULL.

    J'ai fais rapidement un petit essai avec les fonctions mysql_* (mysql_query entre autre), et c'est pareil, les valeurs NULL sont parfaitement respectées.

    Du coup, je ne vois aucune raison pour ça ne soit pas le cas de ton coté.


    J'ai 2 questions du coup.
    C'est une variable $abs2 qui est exploitée dans la condition, or, en général c'est un tableau (ou un objet) qu'on obtient lors d'une requête.
    J'ai tendance à dire que cette variable ne serait pas équivalente à celle qu'à retournée la Bdd.
    Dans la bataille, sa valeur à dû être modifiée, et valoir vide.

    L'autre, et là ça me parais plus important encore :
    Est ce que les valeurs coté Bdd sont vraiment celles quelle doivent être, c'est à dire nulle quand ça doit être NULL (et non 0) ou 0 quand ça doit être 0 (et non NULL).


    En tout cas, vu que c'est une donnée de type INT (integer), et que tu accepte les NULL, la donnée ne doit pas être vide, au pire elle devrait avoir comme valeur 0 (coté Bdd j'entends).


    As tu fait un essai en vérifiant sa valeur pile au moment ou tu récupère sa valeur lors de la requête ?
    Avec la fonction is_null() par exemple ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. Remplacer NULL par O sur plusieurs champs
    Par fpouget dans le forum Développement de jobs
    Réponses: 9
    Dernier message: 18/12/2012, 16h28
  2. [SQL-Server] Insérer la valeur NULL à la place du 0 sur un champ integer
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/09/2010, 10h56
  3. Condition sur un champs null
    Par micbett dans le forum IHM
    Réponses: 4
    Dernier message: 22/03/2008, 15h39
  4. Problème de requête avec cumul des conditions sur un champ
    Par UtopieAmbiante dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2006, 10h52
  5. INSTR sur un champ vide, Detecter un champ null
    Par rodolphedj dans le forum ASP
    Réponses: 4
    Dernier message: 06/09/2004, 15h24

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