Bonjour,
J'ai une page où les gens doivent saisir des chiffres. Ensuite lorsqu'ils ont fini, ils cliquent que envoyer et je voudrais qu'un message d'erreur s'affiche si il y a des chiffres à virgule ou supérieurs à 1000.
Comment faire?
Bonjour,
J'ai une page où les gens doivent saisir des chiffres. Ensuite lorsqu'ils ont fini, ils cliquent que envoyer et je voudrais qu'un message d'erreur s'affiche si il y a des chiffres à virgule ou supérieurs à 1000.
Comment faire?
avec l'expression booléenne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part !is_int($lechiffre) || ($lechiffre > 1000)
En fait j'ai plusieurs "zone de texte" et je veux toutes les tester et si il y en a une avec une valeur abberante lorsque je clique sur envoyer un message apparaît. Donc comment tester toutes les zones de texte?
Pour le message à faire apparaître, il faut du JavaScript (sinon recharger la page avec un message d'erreur).Envoyé par coco38
Si tu as appelé tes zones de texte texte1, texte2, texte3, etc, fais une boucle...
mes zones de textes c nb_sc, nb_sb, nj_sc,...mais le truc c'est que je vois pas comment faire ma boucle justement...
c'est le nom de tes champs?
Code : Sélectionner tout - Visualiser dans une fenêtre à part mes zones de textes c nb_sc, nb_sb, nj_sc
Peux tu nous poster ton formulaire?
oui c'est le nom de mes champs...
Je peux pas mettre tout car c'est super long mais en voici un aperçu (il y en a encore 2 comme cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <td><strong>NB<strong></td> <td><input type="text" maxlength=5 name="nb_sb" size=10 onkeypress="if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;" value="0"></td> <td><input type="text" maxlength=5 name="nb_sc" size=10 onkeypress="if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;" value="0"></td> <td><input type="text" maxlength=5 name="nb_va" size=10 onkeypress="if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;" value="0"></td> <td><input type="text" maxlength=5 name="nb_vs" size=10 onkeypress="if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;" value="0"></td> <td>
voici une boucle qui peut passer en revue tes champs. Mais il y a encore un souci dans le code ci-dessous. C'est que la fonction is_int va toujours trouver false car ce qui vient d'un champ est toujours du texte. Faut donc voir au niveau de la conversion de type. Je vais essayer de regarder. Si quelqu'un à la solution![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php foreach($_POST as $key=>$value){ if (preg_match('/^nb_/',$key)){ if ($value > 1000) echo $value.' > 1000<br />'; elseif (!is_int($value)) echo $value.' not integer<br />'; } } ?>
Bon la conversion de type se fait en utilisant intval. (y'a peut être d'autres solutions). le truc c'est que si ton utilisateur écrit une chaine, la valeur deviendra 0. Est que 0 peut être une entrée valide?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 foreach($_POST as $key=>$value){ if (preg_match('/^nb_/',$key)){ $value = intval($value); if ($value > 1000) echo $value.' > 1000<br />'; elseif (!is_int($value) && $value == 0) echo $value.' not integer<br />'; } }
oui la valeur 0 peut_être valide mais je ne pense pas que l'utilisateur rentrera une chaine. Merci beaucoup mais ce code je le rentre où?
tu peux le mettre avant le traitement des données de ton formulaire.
C'est une sorte de vérification si j'ai bien compris.
Y'a peut être d'autres façons de faire. Mais ceci devrait marcher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function checkFields($data){ $errorFlag = 0; foreach($data as $key=>$value){ if (preg_match('/^nb_/',$key)){ $value = intval($value); if ($value > 1000 || !is_int($value)) { echo $value.'is not a correct value.<br />'; $errorFlag ++; } } } if ($errorFlag == 0) return true; else return false; } if (checkFields($_POST)){ // traitement de ton formulaire }
Merci je vais essayer ça. Et oui c'est une vérification, tu as bien compris
tu peux remplacer is_int par is_float, je pense.Au fait j'ai encore une petite question, comment on fait si je ne veux pas de chiffres décimaux???
http://us2.php.net/manual/fr/function.is-float.php
Merci de nous faire part de tes autres questions sur le forum plutot que par message privé s'il te plait. De cette manière tu peux avoir des réponses plus pertinentes que la mienne (et dieu sait qu'il y en a) et d'autres peuvent en bénéficier.
Partager