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

  FORUM HardWare.fr
  Programmation
  PHP

  Test variable vide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Test variable vide

n°1462750
ddsjm
Posté le 23-10-2006 à 08:10:12  profilanswer
 

Bonjour,
 
J'ai un petit problème sur une page php lorsque je test si une variable est vide.
Elle est déclarée dans phpmyadmin comme étant une année.
voila le test que je fais meme lordque la variable est vide, ca m'affiche 0000 au lieu de . . .

Code :
  1. if (empty($data['anneeprix'])) {
  2.     echo '  <td height="34"><strong><font size="2" face="Geneva, Arial, Helvetica, sans-serif">Ann&eacute;e
  3.         du prix: </font></strong><font size="2" face="Geneva, Arial, Helvetica, sans-serif">. . .</font></td>';
  4. }
  5. else {
  6.  echo '  <td height="34"><strong><font size="2" face="Geneva, Arial, Helvetica, sans-serif">Ann&eacute;e
  7.         du prix: </font></strong><font size="2" face="Geneva, Arial, Helvetica, sans-serif">'.$data['anneeprix'].'</font></td>';
  8. }


Si vous voyez d'où viens le problème,
 
Merci d'avance de vos réponses


---------------
Mon vieux feedback :)
mood
Publicité
Posté le 23-10-2006 à 08:10:12  profilanswer
 

n°1462751
gatsu35
Blablaté par Harko
Posté le 23-10-2006 à 08:15:49  profilanswer
 

ben si c'est 0000 c'est que ta variable n'est pas vide :o
donc autant comparer avec 0000

n°1462762
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-10-2006 à 09:11:24  profilanswer
 

ton champs serait-il pas en not null dans ta bdd?

n°1462765
ddsjm
Posté le 23-10-2006 à 09:14:56  profilanswer
 

Merci,  ca marche en faisant comme ca.
 
Par contre je comprends pas pourquoi ca n'a pas marché avec empty:
" Empty() retourne FALSE si la variable a une valeur non-vide et différente de zéro. "
La valeur étant égale à 0000 je pensais que c'était aussi égal à zéro... :pt1cable:  


---------------
Mon vieux feedback :)
n°1462766
ddsjm
Posté le 23-10-2006 à 09:16:23  profilanswer
 

oui il est en not null
et default : 0000


---------------
Mon vieux feedback :)
n°1462805
gatsu35
Blablaté par Harko
Posté le 23-10-2006 à 09:56:50  profilanswer
 

ddsjm a écrit :

Merci,  ca marche en faisant comme ca.
 
Par contre je comprends pas pourquoi ca n'a pas marché avec empty:
" Empty() retourne FALSE si la variable a une valeur non-vide et différente de zéro. "
La valeur étant égale à 0000 je pensais que c'était aussi égal à zéro... :pt1cable:


Elle était égale à 0000 mais en tant que chaine de caractères :o (enfin je crois)

n°1462807
FlorentG
Posté le 23-10-2006 à 09:58:27  profilanswer
 

gatsu35 a écrit :

ben si c'est 0000 c'est que ta variable n'est pas vide :o
donc autant comparer avec 0000


Si... Bienvenue dans PHP

n°1462828
FlorentG
Posté le 23-10-2006 à 10:23:38  profilanswer
 

Ah en fait non

n°1462831
gatsu35
Blablaté par Harko
Posté le 23-10-2006 à 10:27:39  profilanswer
 

FlorentG a écrit :

Ah en fait non


[:haha]


Message édité par gatsu35 le 23-10-2006 à 10:27:47
n°1462837
FlorentG
Posté le 23-10-2006 à 10:36:19  profilanswer
 

Par contre '0' est bien empty. J'me suis fait un jour une fonction :

Code :
  1. function is_empty($var)
  2. {
  3.   return (empty($var) && $var !== FALSE && $var !== 0 && $var !== '0');
  4. }


Comme ça t'es sûr que c'est vraiment empty

mood
Publicité
Posté le 23-10-2006 à 10:36:19  profilanswer
 

n°1462864
Sh@rdar
Ex-PhPéteur
Posté le 23-10-2006 à 11:11:56  profilanswer
 

ça revient pas à faire un test sur !$var ? (pure curiosité)


Message édité par Sh@rdar le 23-10-2006 à 11:12:04

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1462876
FlorentG
Posté le 23-10-2006 à 11:19:40  profilanswer
 

Presque

n°1462878
Sh@rdar
Ex-PhPéteur
Posté le 23-10-2006 à 11:22:12  profilanswer
 

ouais, en fait je me souvenais plus qu'empty teste aussi si la variable est définie (ça enlève juste une alerte notice) ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1463660
Beatmol
Posté le 23-10-2006 à 23:57:31  profilanswer
 

pourquoi ne pas tester if ($var != '') ce qui résout le pb du empty ...

n°1463661
FlorentG
Posté le 23-10-2006 à 23:58:08  profilanswer
 

Attention, là tu testes pas le type, alors bonjour le bordel

n°1463663
supermofo
Hello World !
Posté le 24-10-2006 à 00:03:54  profilanswer
 

FlorentG a écrit :

Par contre '0' est bien empty. J'me suis fait un jour une fonction :

Code :
  1. function is_empty($var)
  2. {
  3.   return (empty($var) && $var !== FALSE && $var !== 0 && $var !== '0');
  4. }


Comme ça t'es sûr que c'est vraiment empty


 
$var = '0b' => empty

n°1463747
FlorentG
Posté le 24-10-2006 à 09:33:01  profilanswer
 

supermofo a écrit :

$var = '0b' => empty


Euh non, chez moi ça renvoi bien false

n°1463764
supermofo
Hello World !
Posté le 24-10-2006 à 09:57:55  profilanswer
 

Code :
  1. $var = '0';
  2. if ($var == 0) echo 'nul <br />';
  3. if ($var == '0') echo 'nul <br />';
  4. $var = '0a';
  5. echo '========== <br />';
  6. if ($var == 0) echo 'nul <br />';
  7. if ($var == '0') echo 'nul <br />';
  8. $var = '0aaaaaaaaaaz';
  9. echo '========== <br />';
  10. if ($var == 0) echo 'nul <br />';
  11. if ($var == '0') echo 'nul <br />';
  12. $var = 0;
  13. echo '========== <br />';
  14. if ($var == 0) echo 'nul <br />';
  15. if ($var == '0') echo 'nul <br />';
  16. $var = '0;DELETE FROM USER';
  17. echo '========== <br />';
  18. if ($var == 0) echo 'nul <br />';
  19. if ($var == '0') echo 'nul <br />';
  20. /* resultat
  21. '0'
  22. nul
  23. nul
  24. ==========
  25. '0a'
  26. nul
  27. ==========
  28. '0aaaaaaaaaaz'
  29. nul
  30. ==========
  31. 0
  32. nul
  33. nul
  34. ==========
  35. '0;DELETE FROM USER';
  36. nul  
  37. */


 
 
Et le dernier pour confirmer :
 

Code :
  1. $var = '8;DELETE FROM USER';
  2. echo '========== <br />';
  3. if ($var == 0) echo 'nul <br />';
  4. if ($var == '0') echo 'nul <br />';
  5. /* resultat = RIEN */


 
Un autre:
 

Code :
  1. $var = '0;DELETE FROM USER';
  2. $var=(int)$var;
  3. echo '========== <br />';
  4. if ($var == 0) echo 'nul <br />';
  5. if ($var == '0') echo 'nul <br />';
  6. /* resultat
  7. nul
  8. nul */
  9. $var contient l'entier 0 ici donc ca sécurise bien.


 
 
 
 
Donc dans la fonction :
 

Code :
  1. 1.
  2.       function is_empty($var)
  3.    2.
  4.       {
  5.    3.
  6.        return (empty($var) && $var !== FALSE && $var !== 0 && $var !== '0');
  7.    4.
  8.       }


 
Si tu avais oublie " $var !== '0' " tes résultats serait faussés.  
 
Facile à oublier non ?
 
Solution: faire des comparaisons binaires
 
Edit: Tester avec un tableau ne rendra pas les memes résultats ...
 
Edit final: Ca va certainement remuer les miches de certains :D.

Message cité 2 fois
Message édité par supermofo le 24-10-2006 à 10:56:51
n°1463770
gatsu35
Blablaté par Harko
Posté le 24-10-2006 à 10:10:20  profilanswer
 


Faut vérifier la variable avec la fonction :  
isJoomlaFuckThisEmptyVar()

n°1463771
Sh@rdar
Ex-PhPéteur
Posté le 24-10-2006 à 10:12:19  profilanswer
 

:lol:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1463799
supermofo
Hello World !
Posté le 24-10-2006 à 10:33:08  profilanswer
 

gatsu35 a écrit :

Faut vérifier la variable avec la fonction :  
isJoomlaFuckThisEmptyVar()


 
Ignored  :heink:  

n°1463892
FlorentG
Posté le 24-10-2006 à 11:26:04  profilanswer
 

supermofo a écrit :

Si tu avais oublie " $var !== '0' " tes résultats serait faussés.


Ben c'est pour ça que je l'ai pas oublié [:dawak] J'ai fait ce qu'il fallait en test unitaires pour tout tester [:dawak]

n°1463916
Sh@rdar
Ex-PhPéteur
Posté le 24-10-2006 à 11:35:51  profilanswer
 

on va se retaper 3 pages de branlette comme pour les simples/doubles quotes ? [:dawa]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
mood
Publicité
Posté le   profilanswer
 


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

  Test variable vide

 

Sujets relatifs
exec + variable phpliste déroulante à partir d'une bd... vide
comment effacer dynamiquement une ligne vide sur un fichier ?questions variable propagée et css
variable de session pour un sous domainevariable flash => php
[VBA Excel] Combobox se vide après l'enregistrementfonction qui renvoie le type d'une variable
Récupération variable d'une page à l'autre sans formulaire[RESOLU] affichage de 'Resource id #5' au lieu de ma variable
Plus de sujets relatifs à : Test variable vide


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