Page 1 sur 1

[PHP] Texter si mon champ est bien entier ou decimal

Posté : 16 juil. 2006, 02:51
par gaudy
J'ai cree un formulaire avec differents champs <input type=text .... >
Ces champs sont des textes mais ce sont des entiers ou decimaix ( si vous voyez ce que je veux dire . En d'autres mots tous mes champs contiennent des chiffres.
Comment tester si on a vraiment bein rentrer que des chiffres ??
Merci d'avmce.

Posté : 16 juil. 2006, 09:50
par Cyrano
Salut,
commencer par un petit "bonjour", ça use pas le clavier.

Tu as la fonction is_numeric() qui va vérifier comme son nom l'indique si la donnée est bien numérique.
Tu as aussi les expressions régulières : un masque comme ^[0-9]*$ fera très bien l'affaire avec la fonction preg_match()

Tu peux également le faire en JavaScript avec une expression régulière similaire, ce sera même plus rapide puisque s'exécutant directement sur le client, mais ça ne te dispense pas 'une validation coté serveur pour le cas où un internaute aurait éventuellement désactivé le JavaScript.

Posté : 16 juil. 2006, 09:50
par @rthur
Bonjour,

Les fonctions is_int et is_decimal sont là pour ça:

http://fr.php.net/is_int
http://fr.php.net/is_numeric

##edit : grillé par Cyrano :P

Posté : 16 juil. 2006, 11:12
par Ryle
Pour la solution javascript, il y a plus simple que les expressions régulière avec la fonction isNaN() (isNotaNumber) qui retourne faux quand le paramètre passé est un nombre (en tenant compte des éventuels moins et points pour les négatifs et les décimaux) :)

(d'où soit dit en passant la valeur NaN que vous voyez parfois apparaitre lors d'une erreur de calcul :))

Posté : 16 juil. 2006, 16:48
par gaudy
cool !
merci !

Posté : 17 juil. 2006, 03:30
par gaudy
Bin desole de vous cointredire mais is_int ne fonctionne pas comme vous le pensez.
is_int est une fonction qui permet de tester le type de la variable et non pas la variable, grosse difference.
ex: $var1=5;
is_int($var) = true;

$var2="5";
is_int($var) = false;

Par contre is_numeric fonctionne bien ! ( verifie si c'est un numerique ( entier ou decimal) )
is_numeric($var1) = true;
is_numeric($var2) = true;


Quel est son homologue pour un entier.?
Merci d'avance.

Posté : 17 juil. 2006, 03:34
par gaudy

Code : Tout sélectionner

ex: $var1=5; is_int($var) = true; $var2="5"; is_int($var) = false;
Bien sur, il fallait lire

Code : Tout sélectionner

ex: $var1=5; is_int($var1) = true; $var2="5"; is_int($var2) = false;
mais vous avez surement du le corriger par vous meme.

Mais la question reste entiere !!

Ouppss ! decidement, j'ai vraiment du mal avec mon clavier ! ( n'est ce pas Cyrano ! ;) )

Posté : 17 juil. 2006, 07:36
par Cyrano
Tu fais une confusion : si tu écris la valeur entre guillemets, elle sera interprétée comme une chaîne. Fais le test suivant :
<?php
$a = is_int(5) ? "Vrai" : "Faux";
$b = is_int("5") ? "Vrai" : "Faux";
$c = is_int(5.2) ? "Vrai" : "Faux";
$d = is_int("5.2") ? "Vrai" : "Faux";
echo("<p>5 est un entier : ". $a ."</p>\n");
echo("<p>\"5\" est un entier : ". $b ."</p>\n");
echo("<p>5.2 est un entier : ". $c ."</p>\n");
echo("<p>\"5.2\" est un entier : ". $d ."</p>\n");
?>
Et tu vas obtenir :
5 est un entier : Vrai
"5" est un entier : Faux
5.2 est un entier : Faux
"5.2" est un entier : Faux
On constate donc que 5 (sans guillemets) est bien un entier, mais 5.2 ne l'est pas.

Posté : 17 juil. 2006, 20:12
par @rthur
Bin desole de vous cointredire mais is_int ne fonctionne pas comme vous le pensez.
is_int est une fonction qui permet de tester le type de la variable et non pas la variable, grosse difference.
:lol:

is_int() fonctionne bien comme nous le pensons pour l'avoir utiliser plusieurs dizaines (centaines?) de fois auparavant ;)

Si tu lui passes une chaîne de caractères, forcément ça marche moins bien, mais c'est à toi de faire attention au type de donnée que tu lui met en entrée.

Regarde du côté de intval() si ça peut te dépanner :
http://fr.php.net/intval

Posté : 18 juil. 2006, 20:37
par gaudy
Bonjour !
Bon et bien, on ne doit pas parler le meme langage, tout ce que vous me dites, je suis d'accord avec vous mais c'etait pas la question !!
Ma question est la suivante :
Dans un Formulaire ( et dans un formulaire je precise bien que je ne rentre pas des entiers mais du texte avec le form input=text .. etc ),
comment tester si mon champ rentre ( donc du texte !! ) est bien un nombre ou bien un entier.
Is_numeric fonctionne bien mais c'est bon pour les decimaux ca !!
Vous me parler de is_int, OK mais ca teste le type de la variable !
J'ai pas envie de faire des grep et tout et tout , je veux que mon code soit lisible. Il y a bien une fonction qui convertir un string en entier ou un truc comme ca . Je commence a me poser des questions sur PHP !!
J'ai beau regarder sur les forums ou dans des tuttos, pas grand chose !
Merci d'avance.

Posté : 18 juil. 2006, 23:48
par @rthur
Il y a bien une fonction qui convertir un string en entier ou un truc comme ca . Je commence a me poser des questions sur PHP !!
J'ai beau regarder sur les forums ou dans des tuttos, pas grand chose !
Tu as lu mon précédent message jusqu'au bout?! :D