PHP - vérifier le type de la valeur postée

Résolu
nane_nana Messages postés 49 Statut Membre -  
nane_nana Messages postés 49 Statut Membre -
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

7 réponses

  1. Utilisateur anonyme
     
    pour savoir si une valeur est un entier

    if(intval($variable)) { echo' texte'; }
    0
    1. EminoMeneko Messages postés 2499 Statut Membre 318
       
      Ç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.
      0
    2. Utilisateur anonyme
       
      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
      0
  2. Breub62 Messages postés 3452 Statut Membre 369
     
    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.
    0
  3. nane_nana Messages postés 49 Statut Membre 2
     
    j'ai testé intval mais cette fonction transforme un décimal en un entier.
    quand je mets intval(13.5) il m'affiche 13
    0
    1. Utilisateur anonyme
       
      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'; }
      0
  4. Breub62 Messages postés 3452 Statut Membre 369
     
    intval -> valeur entier

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

    ;-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nane_nana Messages postés 49 Statut Membre 2
     
    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
    0
    1. Utilisateur anonyme
       
      intval() et floatval()
      0
  7. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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.
    0
  8. nane_nana Messages postés 49 Statut Membre 2
     
    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';
    }
    
    0