Différence entre empty() et isset() (ou autre) ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Différence entre empty() et isset() (ou autre) ?

par boobz » 09 juil. 2009, 13:59

Merci.

Je crois que j'ai réussi :
if ( $var1 == '0' && $var2 == '0' && $var3 == '0' ) {
	echo "ok";
} else {
	if ( empty($var1) && $empty($var2) && empty($var3)) {
		array_push($error, "All 3 empty");
		$allempty = 1;
	}
}
Faut que je teste en profondeur encore mais il semble que cela fait ce que je veux.

par Angély.dev » 09 juil. 2009, 13:37

J'ai pas tout lu, mais si tu veux toutes les différences entre empty() et isset() voilà un tableau qui récapitule bien ;)
Image

par boobz » 09 juil. 2009, 12:15

remplace tes && par des ||
Bin non je ne peux pas car c'est accepté d'avoir deux champs vides par exemple.

Je pensais avoir trouvé en remplaçant le + par un * dans le code ci-dessous, mais ça ne va pas.
if (!preg_match('/^\d+$/',$var)) {
	echo "pas bon";
} 
Le problème c'est que
empty(0)
vaut vrai.

Je tourne en rond là ..

Quelqu'un a une idée ?

Merci d'avance.

par Invité » 09 juil. 2009, 11:49

remplace tes && par des ||

par boobz » 09 juil. 2009, 11:23

Bonjour,
s'il y a rien dans tes champs empty devrais retourner true donc elle devrait rentrer dans ton if.
Oui cela marche très bien dans le cas où les 3 champs sont vides.
est-ce que dans ton formulaire tu à l'attribut value='' '' ? si oui assure toi qu'il ait pas d'espace. si tu en as pas besoin vire les.
Oui j'en ai un avec un truc du genre
<input type="text" name"var" value="<?php echo $_POST['var'];?>">
Si tu entres 0 dans ton champ, la fonction empty va toujours retourner true car pour elle zero est rien. Donc il te faudra rajouter dans ta condition d'Autre condition disant qu'en plus les valeurs doivent être différentes de 0

Je crois que je me suis suis mal fait comprendre. J'ai 3 champs.

a) si les 3 sont vides, la validation n'est pas acceptée, on dit à l'utilisateur d'en remplir au moins un.
b) si les 3 sont remplis avec la valeur zéro, c'est ok, c'est considéré comme une commande nulle, mais c'est valide.

Et c'est pour faire la différence entre a) et b) que je coince.
Voila revient si tu as encore un problème
Me voilà :-)

par damaskinos » 08 juil. 2009, 16:21

Bonjour,

s'il y a rien dans tes champs empty devrais retourner true donc elle devrait rentrer dans ton if.

est-ce que dans ton formulaire tu à l'attribut value='' '' ? si oui assure toi qu'il ait pas d'espace. si tu en as pas besoin vire les.

Si tu entres 0 dans ton champ, la fonction empty va toujours retourner true car pour elle zero est rien. Donc il te faudra rajouter dans ta condition d'Autre condition disant qu'en plus les valeurs doivent être différentes de 0


Pour connaitre la difference entre empty, isset etc.. la doc l'explique très bien.

Voila revient si tu as encore un problème

Différence entre empty() et isset() (ou autre) ?

par boobz » 08 juil. 2009, 15:34

Bonjour,

J'ai un formulaire avec trois champs qui attendent un nombre > 0 (cf. mon dernier post).

jusqu'à présent j'ai codé des tests pour que les champs soient remplis.

J'avais mis une condition du genre
if ( empty($a) && empty($b) && empty($c) ) {
	echo "Veuillez remplir au moins un champ";
}
Donc si l'utilisateur ne rentre rien et valide, il reçoit ce message.

Maintenant j'aimerai laisser la possibilité de rentrer trois fois le nombre zéro.

Donc j'ai deux cas :

a) trois fois le champ vide
b) trois fois la valeur zéro.

Mon test au-dessus ne fonctionne pas, il me faut autre chose. J'ai essayé avec différentes fonctions, dont isset() et is_null(), mais cela ne fonctionne pas, car si je ne mets rien et valide, ça passe, chose que je ne veux pas, c'est seulement quand je mets zéro dans les trois champs que ça doit passer.

Comment fait-on pour ce cas (très) spécial ?

Merci d'avance pour vos suggestions.

boobz