PHP : gérer erreur dans formulaire

Résolu
lili -  
 le père -
Bonjour,

J'aimerai savoir comment peut-on gérer la condition suivante sur un formulaire :
Dans le champs "Quantité" , on ne peut insérer que des chiffres et non des lettre !

Dois-je faire :

if ($quantité =! {0,1,2,3,4,5,6,7,8,9}) {
..
}
Merci de votre aide
Configuration: Windows XP Internet Explorer 6.0

12 réponses

  1. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    http://www.php.net/manual/en/function.is-int.php

    voir aussi is numeric
    1
  2. le père
     
    Il y a bien un problème dans le formulaire, c'est le type="int" au lieu de "text"
    Mais ça n'est pas ça qui empêche de marcher
    Il faut utiliser is_numeric et non pas is_int. Le rôle n'est pas exactement le même et c'est is_numeric qui convient dans ton cas.
    1
  3. lili
     
    Merci pour ton site...
    Malheureusement, je n'arrive pas à l'appliquer pour mon script.

    Voici mon bout de code :

    if (is_int($quantite)){
    $sql = "INSERT INTO voir_conso VALUES ('','$type_machine', '$type_materiel', '$quantite','$lieu_conso', '$fournisseur_conso')";
    }else{
    echo 'Le champs Quantite est invalide';
    }

    Mais, que je mette un nombre ou des lettre dans le champ "quantité", il m'affiche : 'Le champs Quantite est invalide'

    Merci de ton aide
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. le père
     
    Bonjour

    On ne voit pas tout ton script, mais on peut supposer que $quantite ne contient pas ce que tu crois. Comment s'appelle exactement (en respectant les majuscules et les accents) ton champ Quantité dans le formulaire ?
    Si c'est quantite, tu récupères sa valeur dans $_POST['quantite'] . Il faut donc que tu commences par faire $quantite = $_POST['quantite'] pour récupérer sa valeur.
    0
  6. lili
     
    Oui voila.. c'est ce que j'ai fais... Mais ca ne marche pas
    .

    Voici mon script :
    <?php
    $connexion = mysql_connect("localhost","root","");
    $selection_base = mysql_select_db("test",$connexion);

    $type_machine = $_POST['type_machine'];
    $type_materiel = $_POST['type_materiel'];
    $quantite = $_POST['quantite_conso'];
    $lieu_conso = $_POST['lieu_conso'];
    $fournisseur_conso = $_POST['fournisseur_conso'];

    if (is_int($quantite)){
    $sql = "INSERT INTO voir_conso VALUES ('','$type_machine', '$type_materiel', '$quantite','$lieu_conso', '$fournisseur_conso')";
    }else{
    echo 'Le champs Quantite est invalide';
    }
    $ok = mysql_query($sql,$connexion);

    if($ok){echo 'Votre conso a bien été ajouté dans la base de données.';}
    else {'Impossible d`ajouter votre conso. Veuillez réessayer.';}

    mysql_close();
    ?>
    0
  7. le père
     
    Alors ça vient sans doute du formulaire. Peux-tu le montrer ?
    0
  8. lili
     
    Oui , le voici :

    <form method="post" action="ajouter_bdd_conso.php">
    <table>

    <tr>
    <TD>Type de machine : </TD>
    <TD>
    <SELECT name="type_machine">
    <OPTION VALUE="xerox-dp75">Xerox DP75</OPTION>
    <OPTION VALUE="4112">Xerox 4112</OPTION>
    <OPTION VALUE="autre">Autre</OPTION>
    </SELECT>
    </TD>
    </tr>

    <tr>
    <td>Type de matériel : </td>
    <td><input type="text" name="type_materiel"></td>
    </tr>

    <tr>
    <td>Quantité : </td>
    <td><input type="int" name="quantite_conso"></td>
    </tr>

    <tr>
    <td>Lieu du conso : </td>
    <td><input type="text" name="lieu_conso"></td>
    </tr>
    <tr>
    <td>Fournisseur du conso: </td>
    <td><input type="text" name="fournisseur_conso"></td>
    </tr>

    <tr>
    <td align="center" colspan="2"><input type="submit" value="envoyer" name="envoi_conso"><input type="reset" value="effacer"></td>
    </tr>
    </table>
    </form>
    0
  9. lili
     
    Oui c'est exact...
    Cela a bien marché. Merci
    0
  10. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    ha ben c'est cool, ca veut dire que j'avais la réponse dans mon premier post ;)
    0
    1. le père
       
      ben oui. Et ton explication du message 8 était ok aussi
      0