Page 1 sur 1

Logique et is_integer

Posté : 16 mai 2006, 23:19
par Jeqla
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)

Posté : 16 mai 2006, 23:30
par Truc
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

Posté : 16 mai 2006, 23:45
par Jeqla
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

Posté : 17 mai 2006, 00:03
par Truc
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.