Logique et is_integer

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 : Logique et is_integer

par Truc » 17 mai 2006, 00:03

la fonction is_integer ne marche que sur des nombres repondant au critere is_numeric ?
Non, les données proviennent d'un formulaire donc tu retouve des chaines de caractères, si tu passe un entier directement qui provient d'un calcul ou autre cela fonctionnera avec is_integer.

par Jeqla » 16 mai 2006, 23:45

Bon, l'ami au pelage tacheté,

C'est vrai qu'on peut le voir aussi comme ca et que là, avec un petit test is_numeric et, si oui, intval() sur le resultat. En effet, ca marche nickel.

En meme temps, etant en pleine formation "le Merovingien" pour pouvoir un jour programmer le sous-programme gateau moi-meme (cf le film de ce soir...), la fonction is_integer ne marche que sur des nombres repondant au critere is_numeric ? je veux dire par la, on ne peut pas tester directement une chaine de caracteres avec is_integer ?

En tout ca merci pour la reponse rapide, une fois de plus.
:oops:

Le non-logique... :D

par Truc » 16 mai 2006, 23:30

Salut l'ami non logique :)
Note : Pour tester si une variable est un nombre ou une chaîne numérique (comme les entrées de formulaire, qui sont toujours des chaînes), vous devez utiliser la fonction is_numeric().
ou utiliser intval() lors de l'affectation de la variable POST à $q1q1

Logique et is_integer

par Jeqla » 16 mai 2006, 23:19

Amis de la logique bonsoir.

Je me suis demande dans quelle section poster mes 4 pauvres lignes de code, mais je pense qu'ici "debuter en php", ca convient bien. Encore un probleme de plus qui semble tout con mais qui m'en a fait voir aujourd'hui, pourtant, je suis sur que c'est un probleme de logique a deux balle (le probleme, pas la logique... ;) ). Allez, on plonge.

On imagine un formulaire en methode post avec des reponses analysées avant d'être rentrées dans la BDD. La question Q1-1 demande l'age de la personne. Le code d'analyse est le suivant :
if (isset($_POST['Q1-1'])) {
	$q1q1=$_POST['Q1-1'];
	if ($q1q1=="") {
	    echo "Question 1-1 oubliée<br>";
		$erreurs=$erreurs+1;
	}elseif (!is_integer($q1q1)) {
		echo "Réponse 1-1 n'est pas un nombre entier<br>";
		$erreurs=$erreurs+1;
	}
}
Tout a l'air de bien se passer sauf quand on rentre effetivement l'age en annee (28 pour l'exemple). A ce moment la s'affiche le message d'erreur comme si le nombre renseigné n'etait pas un entier.

Les lois de l'arithmetiques me disent encore, meme apres le visionage de Matrix ce soir a France2, que 28 est un entier...

... [-o< à l'aide ... (et merci d'avance)