PHP - vérifier le type de la valeur postée [Résolu/Fermé]

nane_nana 44 Messages postés mardi 17 février 2009Date d'inscription 14 juin 2011 Dernière intervention - 28 juin 2010 à 16:00 - Dernière réponse : nane_nana 44 Messages postés mardi 17 février 2009Date d'inscription 14 juin 2011 Dernière intervention
- 28 juin 2010 à 17:32
Bonjour,

J'ai un formulaire qui contient plusieurs champs; pour certains la valeur saisie doit obligatoirement être un entier et pour d'autres la valeur doit être un décimal.

Si j'utilise les fonctions is_int et is_float, elles me renvoient tjr false et je ne sais pas quoi faire.


j'ai même créé un ficher (dont le contenu suit) qui ne teste que si la valeur entrée est un décimal et j'ai tjr false.


fichier index.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="test.php">
  <input name="saisie" type="text" id="saisie">
  <input type="submit" name="Submit" value="Vérifier">
</form>
</body>
</html>



le fichier test.php
<?php
$valeur=$_POST['saisie'];
if (is_float($valeur))
{
echo 'C\'est un décimal';
}
else
{
echo 'Ce n\'est un décimal';
}

?>


Merci de m'aider

Afficher la suite 

11 réponses

Utilisateur anonyme - 28 juin 2010 à 16:03
0
Utile
2
pour savoir si une valeur est un entier

if(intval($variable)) { echo' texte'; }
EminoMeneko 2438 Messages postés jeudi 24 janvier 2008Date d'inscription 14 mars 2016 Dernière intervention - 28 juin 2010 à 16:09
Ça fait un moment que je n'ai pas fait de PHP mais de souvenir les variables en PHP ne sont pas fortement typés et je pensais qu'il faudrait les transtyper comme tu viens de le montrer.
Utilisateur anonyme - 28 juin 2010 à 16:23
cette condition est toute simple
elle ne transforme rien

elle regarde juste si la variables est un nombre entier
si oui
la condition est executée

après selon si il ya des guillemets ou autre
effectivement je ne sais pas ce que sa donne

pour transformer la variable (ou essayer)
juste : $nombre = intval($variable);

mais j'utilise ce test pour mon site et il suffit dans la plupart des cas
Breub62 3158 Messages postés lundi 7 juin 2010Date d'inscription 17 avril 2014 Dernière intervention - 28 juin 2010 à 16:04
0
Utile
Il me semble que php gère la plupart des données postées comme étant des string. Cependant tu peux peut-être parser tes données avant envoie mais je vois pas comment.
nane_nana 44 Messages postés mardi 17 février 2009Date d'inscription 14 juin 2011 Dernière intervention - 28 juin 2010 à 16:20
0
Utile
1
j'ai testé intval mais cette fonction transforme un décimal en un entier.
quand je mets intval(13.5) il m'affiche 13
Utilisateur anonyme - 28 juin 2010 à 16:32
exact

donc pour le decimal c'est "floatval()"

if (intval($variable)) { echo' c'est un entier'; }
elseif (floatval($variable)) { echo' c'est un decimal'; }
else { echo 'je ne sais pas'; }
Breub62 3158 Messages postés lundi 7 juin 2010Date d'inscription 17 avril 2014 Dernière intervention - 28 juin 2010 à 16:23
0
Utile
intval -> valeur entier

logique qu'il te retourne la partie entière de ton nombre décimal....


;-)
nane_nana 44 Messages postés mardi 17 février 2009Date d'inscription 14 juin 2011 Dernière intervention - 28 juin 2010 à 16:37
0
Utile
1
J'ai remplacé le is_float du fichier test.php par is_string et il me renvoie tjr true.

j'ai cherché une fonction qui peut me convertir un string en un numérique mais je ne trouve pas
Utilisateur anonyme - 28 juin 2010 à 16:41
intval() et floatval()
avion-f16 18235 Messages postés dimanche 17 février 2008Date d'inscriptionContributeurStatut 30 décembre 2017 Dernière intervention - 28 juin 2010 à 16:41
0
Utile
Salut.
Tu peux forcer le typage.
Exemple :
$float = (float) $_POST['nombre'];
$int = (int) $_POST['nombre2'];
Si l'utilisateur entre n'importe quoi, ça sera 0.
nane_nana 44 Messages postés mardi 17 février 2009Date d'inscription 14 juin 2011 Dernière intervention - 28 juin 2010 à 17:32
0
Utile
j'ai finalement écrit un code qui peut me gérer la situation

$valeur=$_POST['saisie'];
if (is_numeric($valeur))
{
if (strpos($valeur,".")=== false)
{
echo 'C\'est un entier';
}
else 
{
echo 'C\'est un décimal';
}
}
else
{
echo 'ce n\'est pas un nombre';
}