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';
    }
    1. && value <201) // a rajouter dans le if par exemple ou refaire un if pour personnaliser les alert
      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>
        1. avec l evenement onchange de ton input?
          Apres tu testes su ton input est une numeric
          Dans le cas contraire une alert();
          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
            1. Quel est l'erreur ? Dans le code j'ai volontairement oublié la balise fermante ?> mais il faut la mettre.
            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>