0 devient empty PHP

Résolu/Fermé
naitreGitan Messages postés 406 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 6 décembre 2018 - Modifié par naitreGitan le 22/03/2010 à 12:13
 jibb3r - 6 juil. 2013 à 00:42
bonjour à tous,

J'ai un problème, j'ai un formulaire (post) avec un champs et un bouton valider pour envoyer mon formulaire.

J'arrive sur une seconde page php qui vérifie le champs saisie avant.
La vérification consiste a voir si le champs n'est pas vide.

mon code pour le formulaire :
<form method="post" action="verif_champs.php">
champs : <input type="text" name="nom_champs">
<input type="submit" name="submit" value="Valider">
</form>

code Verif_champs :
if (!empty($_POST['monChamps'])){
echo "c'est ok!";
}

Le problème est que quand je mets rien, il détecte bien qu'il n'y a rien.
Quand je mets un chiffre, ça marche impeccable, il m'affiche bien "c'est ok!" sauf pour le chiffre 0.

L'impression qu'il dit que 0 et comme empty ??
J'ai fais un affichage de $_POST['monChamps'] dans la page verif_champs, il m'affiche bien 0.
j'avoue que je ne comprends pourquoi.

si quelqu'un a déjà eu le problème.

merci d'avance

PS : dans le code que j'ai écris, tout n'y figure pas (balise html body ...)
Si vous voulez d'autre infos, n'hésitez pas
A voir également:

1 réponse

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
Modifié par kij_82 le 22/03/2010 à 13:13
Bonjour,


Bizarre effectivement, j'ai le même comportement que celui que tu décris lorsque j'essaie ton script.

Dans tous les cas, dans le script de vérification, tu t'es trompé dans le nom du champs.
Mis à part ça, voici la correction apportée pour que cela fonctionne correctement:

if ( isset($_POST['nom_champs']) && trim($_POST['nom_champs']) != "" ){  
echo "c'est ok!"; 
}  


Testé et approuvé, ça devrait donc fonctionner chez toi aussi.


~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
0
naitreGitan Messages postés 406 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 6 décembre 2018 2
22 mars 2010 à 18:22
Merci pour ta réponse.

C'est ce que j'ai fais pour résoudre le problème mais sincèrement, je ne vois pas pourquoi il considère le 0 comme empty.

Quelqu'un a une idée sur ce sujet ?

merci
0
vincebzh Messages postés 137 Date d'inscription lundi 22 mars 2010 Statut Contributeur Dernière intervention 7 mai 2013 29
Modifié par vincebzh le 22/03/2010 à 23:55
Salut.
Quand tu lis la doc php ( https://www.php.net/manual/fr/function.empty.php ), c'est bien indiqué que 0 est considéré comme vide.
Dans les commentaires il à plein de fonctions qui peuvent être utiles.
0
naitreGitan Messages postés 406 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 6 décembre 2018 2
22 mars 2010 à 22:01
AH ok.
dsl d'avoir posé la question. J'aurais du cherché plus longtemps sur le net.
Mais ça me paraissait tellement logique que 0 n'est pas vide :)

je regarde ça :)

merci
0
0 c'est false dans beacoup de langages, y compris C sur lequel est basé PHP
pour s'en convaincre
var_dump(false == 0) : true !
var_dump(false == '') : true !
....
0