Obliger du numérique dans input type="text"

Résolu
Bonjour,

j'ai une formation en html et php. Pour mettre en pratique ce que j'apprends, je fais une page html et une page php. dans mes pages, je demande a l'utilisateur de mettre une valeur (obligatoirement en chiffre) entre 0 et 200 (saisie non-obligatoire). Pour ce type de donnée, voici la balise utilisé:

<input type="text" maxlength="3" name="choix-concours"/>


Ce code de type texte autorise maximum 3 caractères. Mais je souhaite que seul les chiffres soit autorisé avec comme valeur maximum: 200

Comment puis-je faire ?

Merci d'avance.

5 réponses

  1. Si tu veux vérifier ce que l'utilisateur a rentré, n'utilise pas d'attribut html ni de javascript car il peux facilement être modifié/désactivé. Tu devras faire une vérification côté serveur en php, par exemple :

    <?php
    if (!is_numeric($_POST['choix-concours']) {
        echo 'Veuillez entrer un nombre';
    } else {
        $var = intval($_POST['choix-concours']);
        if ($var >= 0 && $var <= 200)
            echo 'c\'est bon';
        else
            echo 'Veuillez entre un nombre entre 0 et 200';
    }
    2
    1. J'ai WampServer installé sur mon pc, pour tester mes fichiers php je dois mettre : localhost/concours/index. html pour avoir cette page:

      <html> 
      <head> 
      </head> 
      <body> 
      <form action="info-concours.php" method="post"> 
      <table align="center" border="0"> 
      <tr><td valign="top" align="right">Date d'ouverture du concours :</td><td>21/08/2011</td></tr> 
      <tr><td valign="top" align="right">Date de fin de participation :</td><td>28/08/2011</td></tr> 
      <tr><td valign="top" align="right">Date du tirage :</td><td>29/08/2011</td></tr> 
      <tr><td valign="top" align="right">Gain :</td><td>5.000 euros</td></tr> 
      <tr><td valign="top" align="right">Contact concours :</td><td><a href="http://www.teste.be/contact.html">Page de contact</a></td></tr> 
      <tr><td valign="top" align="right">Entrez un nombre entre 0 et 200 :</td><td><input type="text" maxlength="3" name="choix-concours"/></td></tr> 
      </table> 
      <div align="center"><input type="submit" name="Validé"/></div> 
      </form> 
      </body> 
      </html>


      et voici le code de la page php :
      <html> 
      <head> 
      </head> 
      <body> 
      <font align="center"> 
      <h4> 
      <table align="center" border="0"> 
      <tr><td valign="top" align="right">Date d'ouverture du concours :</td><td>21/08/2011</td></tr> 
      <tr><td valign="top" align="right">Date de fin de participation :</td><td>28/08/2011</td></tr> 
      <tr><td valign="top" align="right">Date du tirage :</td><td>29/08/2011</td></tr> 
      <tr><td valign="top" align="right">Gain :</td><td>5.000 euros</td></tr> 
      <tr><td valign="top" align="right">Contact concours :</td><td><a href="http://www.teste.be/contact.html">Page de contact</a></td></tr> 
      <tr><td valign="top" align="right">Votre nombre est de :</td><td><?php echo $_POST['choix-concours']; ?></td></tr> 
      </table> 
      </h4> 
      </font> 
      </body> 
      </html>


      Je compte ajouter une validation en plus avant l'envoi du nombre choisi.

      Où dois-je mettre le code que tu m'a envoyé? car j'ai tester dans "Votre nonbre est de :" Mais j'ai une erreur sur le code :s
      0
      1. Quel est l'erreur ? Dans le code j'ai volontairement oublié la balise fermante ?> mais il faut la mettre.
        0
      2. Voila, j'ai trouvé un code parfait. Si la valeur dépasse 200, une valeur aléatoire va être affichée :

        <html>   
        <head>   
        </head>   
        <body>   
        <font align="center">   
        <h4>   
        <table align="center" border="0">   
        <tr><td valign="top" align="right">Date d'ouverture du concours :</td><td>21/08/2011</td></tr>   
        <tr><td valign="top" align="right">Date de fin de participation :</td><td>28/08/2011</td></tr>   
        <tr><td valign="top" align="right">Date du tirage :</td><td>29/08/2011</td></tr>   
        <tr><td valign="top" align="right">Gain :</td><td>5.000 euros</td></tr>   
        <tr><td valign="top" align="right">Contact concours :</td><td><a href="http://www.teste.be/contact.html">Page de contact</a></td></tr>   
        <tr><td valign="top" align="right">Votre nombre est de :</td><td><?php
        if ($_POST["choix"] <= "200") 
        {
        	echo $_POST["choix"] ;
        } 
        else 
        {
            echo '<script language="JavaScript"><!--
           function alea(a,b) {
              return Math.floor(Math.random()*(b-a+1))+a
           }
        
           for(i=1;i<2;i++)
              document.write(alea(1,200)+" ")
        //--></script>';
        }
        ?></td></tr>   
        </table>   
        </h4>   
        </font>   
        </body>   
        </html> 
        0
    2. avec l evenement onchange de ton input?
      Apres tu testes su ton input est une numeric
      Dans le cas contraire une alert();
      0
      1. voila un code qui reprendra peut etre a ta question :
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
        
        <html>
        
        <head>
        <title>Sans Titre</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript">
        function test(value) {
        if (parseInt(value)==value) alert ('ok'); else alert('pas bon');
        }
        </script>
        </head>
        <body bgcolor="#FFFFFF">
         <input type="text" name="to" size="20" onchange="test(this.value);" />
        
        <input type="submit"  value="cliquer pour declencher onchange" />
        <hr />
        </body>
        </html>
        0
        1. && value <201) // a rajouter dans le if par exemple ou refaire un if pour personnaliser les alert
          0