Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2471 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Tester si variable est NULL ? [résolu]

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tester si variable est NULL ? [résolu]

n°1318525
TheBosy
Posté le 04-03-2006 à 19:29:54  profilanswer
 

Bonsoir à tous,
 
Est-il possible de tester une variable si elle est NULL? J'ai essayé que si ma variable est NULL, alors elle devient égal à 0.
 

Code :
  1. if(!isset($var) && $var=="" ) {
  2.   $var=0;
  3.  }


 
Mais celà ne marche pas, j'ai égallement essayé en mettant une valeur par defaut de 0 dans ma base de données, mais celà ne va pas non plus.
 
Bonne soirée a+


Message édité par TheBosy le 05-03-2006 à 00:30:51
mood
Publicité
Posté le 04-03-2006 à 19:29:54  profilanswer
 

n°1318530
hugoOo
laisse pas dépasser ton pixel
Posté le 04-03-2006 à 19:42:44  profilanswer
 

il me semble que c'est :  

Code :
  1. if(empty($var)) {
  2. echo 'la variables est vide!';
  3. } else{
  4. echo 'la variable n\'est pas vide';}


A vérifier

Message cité 1 fois
Message édité par hugoOo le 04-03-2006 à 19:43:06
n°1318538
Djebel1
Nul professionnel
Posté le 04-03-2006 à 19:53:43  profilanswer
 

if ($var === 0) il me semble (en tout cas la triple egalite permet de distinguer un false d'un 0)
 
et son equivalent negatif : if ($var !== 0)


Message édité par Djebel1 le 04-03-2006 à 19:54:33
n°1318551
TheBosy
Posté le 04-03-2006 à 20:10:56  profilanswer
 

hugoOo a écrit :

il me semble que c'est :  

Code :
  1. if(empty($var)) {
  2. echo 'la variables est vide!';
  3. } else{
  4. echo 'la variable n\'est pas vide';}


A vérifier


 
Avec celà j'arrive bien a detecter si la variable est null ou pas, mais ensuite comment faire pour qu'elle passe de NULL à une valeur 0 ?
 

Code :
  1. if(empty($var)) {
  2.       $var=0;
  3.       }

n°1318556
newneo2001
Posté le 04-03-2006 à 20:17:35  profilanswer
 

empty c'est si c'est vide, alors que null c'est égal à 0
 
if (is_null($var)) c'est exactement ce que tu veux
 
http://fr2.php.net/manual/fr/function.is-null.php


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1318559
TheBosy
Posté le 04-03-2006 à 20:35:16  profilanswer
 

J'aimerais que ça fasse la différence entre NULL et 0, mais comment faire, je but la dessus depuis 2 bonnes heures...
 
Que ca me met dans la base de donné: 0 et non NULL.
 
Car quand j'essai d'insérer mon variable=0, ca me dit que ca ne peut pas être NULL, car je suis en NOT NULL, alors je met NULL dans la base de donné et il prend mon 0 pour un NULL.
 
A+


Message édité par TheBosy le 04-03-2006 à 20:36:28
n°1318566
TheBosy
Posté le 04-03-2006 à 20:58:02  profilanswer
 

Plus clairement que dans ma base de données, le 0 soit pas considéré comme NULL.
 
Vous avez une idée comment faire? Car dans EasyPhp celà marchait, et sur mon hebergeur ca ne marche pas.

n°1318587
Djebel1
Nul professionnel
Posté le 04-03-2006 à 21:18:24  profilanswer
 

normalement si une variable contient 0, ça insere 0 dans la bdd et pas NULL. Tu peux d'ailleurs essayer en faisant une requete SQL sans passer par PHP.
 
Donc à mon avis c'est uniquement un probleme de condition dans ton script PHP, et toutes les réponses ont été données. Apres, sans plus de code, c'est dur à dire
 
Sous easyPHP tu avais quelle version de PHP ? et chez ton hébergeur ?


Message édité par Djebel1 le 04-03-2006 à 21:19:05
n°1318600
TheBosy
Posté le 04-03-2006 à 21:28:24  profilanswer
 

J'ai Easyphp 1.8 = PHP Version 4.3.10 et sur mon hebergeur PHP 5.x ou PHP 4.x
 
Celà pourrait-être la cause de cette différence?
 
Mais sinon sur Easyphp c'est phpMyAdmin 2.6.1 et sur mon hebergeur phpMyAdmin 2.6.2 donc la il y a une différence.

n°1318609
KangOl
Profil : pointeur
Posté le 04-03-2006 à 21:35:57  profilanswer
 

la seule différence ne peut se trouver qu'un niveau de mysql

mood
Publicité
Posté le 04-03-2006 à 21:35:57  profilanswer
 

n°1318625
TheBosy
Posté le 04-03-2006 à 21:48:03  profilanswer
 

KangOl a écrit :

la seule différence ne peut se trouver qu'un niveau de mysql


 
Comment ça? Tu dis donc que la différence est dans ce niveau d'écart?

n°1318653
Djebel1
Nul professionnel
Posté le 04-03-2006 à 22:25:36  profilanswer
 

et sur ton hébergeur, c'est pas PHP5 par défaut, avec un truc à faire pour etre sous PHP4 ?

n°1318664
TheBosy
Posté le 04-03-2006 à 22:30:47  profilanswer
 

Je sais pas, je vais allé voir, mais mon problème c'est lors de l'insertion dans la base de données.
 
Je veux pouvoir insérer des " 0 " car c'est un classement de foot, et donc une defaite fait 0 point, mais lors de l'insertion ca me note toujours la même erreur: cannot be null.

n°1318689
newneo2001
Posté le 04-03-2006 à 22:45:32  profilanswer
 

ben sur easyphp moi j'ai des champs MYSQl défini en INTEGER et je peux mettre  0 dedans


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1318729
TheBosy
Posté le 04-03-2006 à 23:21:25  profilanswer
 

Bon voilà j'ai trouvé le problème, entre le php4 de easyphp qui prend:
 
$var=0; // comme le nombre 0
 
Le php5 de mon hebergeur prend:
 
$var=0, // comme étant null, donc il suffisait de mettre $var='0';
 
Ca me fait mal de perdre du temps comme ça !!!

n°1318806
Djebel1
Nul professionnel
Posté le 05-03-2006 à 01:16:09  profilanswer
 

t'es sur que le champ dans ta base est un nombre (int, tinyint, double, etc ) ?


Message édité par Djebel1 le 05-03-2006 à 01:16:26
n°1318818
newneo2001
Posté le 05-03-2006 à 02:29:51  profilanswer
 

quand tu fais $var='0'; là tu le définis comme une chaine et non un nombre


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1320325
omega2
Posté le 07-03-2006 à 16:53:03  profilanswer
 

Désolé de faire remonter ce "topic" soit disant résolu mais visiblement résolu n'importe comment.
 
TheBosy > Que ce soit avec php 4 jusqu'au versions les plus récentes, les php5 ou 5.1 jusqu'aux versions du milieu du mois dernier, je n'ai jamais eu de variable qui se retrouvent à "null" dans la base quand je lui donne 0.
 
Si t'as eu "null", c'est que t'as envoyé "null" dans ta requette. T'as donc un test foireux dans un de tes fichiers php et ton test foireux utilise certainement la fonction "empty()". Contrairement à ce que tu t'étais imaginé, "empty()" ne fait pas la différence entre un nombre égal à zéro, une chaine de longueur 0 caractére et une variable sans valeur.
 
En mettant $var='0'; c'est vrai que t'as contourné le probléme en faisant croire à "empty()" qu'il avait à faire à une chaine de longueur 1 caractére mais c'est une abération que de devoir transformer un nombre en une chaine pour pouvoir mettre un nombre dans une base de donnée.
 
Au lieu de continuer à tester la valeur de ta variable avec "empty()" t'aurais mieux fait d'utiliser "is_null()" comme indiqué par newneo2001. C'est la fonction qui fait exactement ce dont t'avais besoin (pourquoi donc s'en passer?) et ca t'aurait évité de faire une bidouille sans aucun intéret si ce n'est passer outre un test mal écrit.
Le bug que t'avais créé est toujours là et tu véras qu'un jour tu remettras un nombre dans cette variable en te demandant pourquoi t'avais bien pu mettre une chaine et t'auras les boules que ca ne marche plus. Si tu veux faire des corrections alors fait des corrections logique et pas des bidouilles que tu seras incapable de comprendre dans 2-3 mois.
 
KangOl > Son probléme n'a rien à voir avec une différence de version de Mysql ou de php et tout à voir avec une modification non maitrisé d'un script. Si tu savais le nombre de fois qu'une personne a sorti sur ce forum que son code marchait chez lui et pas chez son hébergeur (où l'inverse) sans avoir envoyé la derniére version de son fichier dans le bon répertoire ou en oubliant que le fameux script avait été modifié entre temps, tu serais éffaré.

n°1325505
MisteroL
Posté le 14-03-2006 à 22:26:41  profilanswer
 

Code :
  1. if(!$variable) { echo"nulle"; } else { echo"pas nulle"; }


n°1325585
Djebel1
Nul professionnel
Posté le 15-03-2006 à 02:13:41  profilanswer
 

Misterol, le mec qui débarque mdr.
(!$variable) ne fera pas la différence entre 0 et null, faut lire les topics un peu ;)

n°1325827
bixibu
Ca ... c'est fait!
Posté le 15-03-2006 à 14:24:38  profilanswer
 

Salut petite question , j'ai pas tout compris :/
 
Si je veut tester qu'une variable a bien été est déclaré (isset) et qu'elle n'est ni nulle, ni égale à 0, le plus simple c'est quoi?
 
merci beaucoup

n°1326144
newneo2001
Posté le 15-03-2006 à 19:46:33  profilanswer
 

if ( (isset($var)) && (!is_null($var)) && ($var != 0) )
 
mais normalement $var != 0 et !is_null te renverra pareil


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1326224
bixibu
Ca ... c'est fait!
Posté le 15-03-2006 à 21:28:22  profilanswer
 

oué ca c'est ce que j'ai mi, mais justement est-ce optimisable ?
 
merci en tout cas

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Tester si variable est NULL ? [résolu]

 

Sujets relatifs
Matcher un nombre inconnu d'arguments[Résolu][RESOLU]Créer une instance Excel à partir de Word 97 ou 2003
[Tester differents shape entre eux ] : probleme[resolu] pas de rép alors...
[resolu]organisation bddNewbies NULL & NOT NULL
[resolu] Convertir un entier en chaine représentant sa valeur hexa[resolu] erreur WARNING
[resolu]condition dans une boucle[resolu] problème requete erreur de syntaxe du a des quotes...
Plus de sujets relatifs à : Tester si variable est NULL ? [résolu]


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR