Tester si un champ est un nombre

Le
hyp3r1on
Bonjour,

dans un formulaire je demande l'age.
Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien bien
un chiffre.
Comment puis-je faire en php

D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste après
la verification du formulaire.

Pour les balise input j'ai pas de pb mais je vrois que "Value" ne fonctionne
pas avec les balise select
Merci de votre aide
Hyp3r1on

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Thibaut Allender
Le #537132

dans un formulaire je demande l'age.
Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien bien
un chiffre.
Comment puis-je faire en php


if (is_int(abs($var)) && abs($var) != 0) { // ok }

je ne sais pas si is_numeric($var) fonctionne directement si $var
provient d'un input de type "text"
on doit donc passer par abs() pour en prendre la valeur absolue, et donc
tester si celle-ci n'est pas nulle car abs('toto') = 0

D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste après
la verification du formulaire.


en bouclant pour generer les options du select, et en faisant les tests
ad hoc pour utiliser "selected" au bon endroit

par exemple pour le jour :

<?php
for ($i=1;$i<32;$i++) {
print "<option value="$i"";
if ($i == $monjour) print " selected="selected";
print ">$i</option>n";
}

Pour les balise input j'ai pas de pb mais je vrois que "Value" ne fonctionne
pas avec les balise select


ceci dit, c'est un probleme html, pas php...

--
freelance + web|system developer|designer
+ 32 496 26 75 76 + http://www.capsule.org

Savut
Le #537129
plusieurs solution possible

if (is_integer($age)) {
echo "Nombre integer";
}

if (ereg("^[0-9]$", $age)) {
echo "Chiffres seulement";
}

Pour selectionner un value dans un select, utilise selected

<select name='orange'>
<option value='1'>1</option>
<option value='2' selected>2</option>
<option value='3'>3</option>
</select>

Tu peux faire un if pour voir si tu ajoute un selected ou non, rien de plus
complique.

Savut

"hyp3r1on" news:c1g66c$co$
Bonjour,

dans un formulaire je demande l'age.
Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien
bien

un chiffre.
Comment puis-je faire en php

D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste
après

la verification du formulaire.

Pour les balise input j'ai pas de pb mais je vrois que "Value" ne
fonctionne

pas avec les balise select
Merci de votre aide
Hyp3r1on


Nonobis
Le #537127
Le Tue, 24 Feb 2004 20:12:21 +0000, hyp3r1on a écrit :

Bonjour,

Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien bien
un chiffre.


La fonction gettype($var) retourne une chaîne de caractères contenant le nom
du type de la variable $var.

Ce type peut être entier (integer), flottant (double), tableau (array),
objet (object), booléen (boolean), chaîne de caractères (string),
fonction définie par l'utilisateur (user function), ressource (ressource)
ou inconnu (unknown type).


D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste après
la verification du formulaire.


il faut que lors du "reafichage" de ton formulaire tu insères "selected"
dans la balise <option> concernée Ex :

<select name="toto">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3' selected>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
</select>


Merci de votre aide


De rien

Nonobis

Eric Hoffmann
Le #537128
essais "is_integer(age)";
"hyp3r1on" news:c1g66c$co$
Bonjour,

dans un formulaire je demande l'age.
Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien
bien

un chiffre.
Comment puis-je faire en php

D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste
après

la verification du formulaire.

Pour les balise input j'ai pas de pb mais je vrois que "Value" ne
fonctionne

pas avec les balise select
Merci de votre aide
Hyp3r1on


Jedi121
Le #542321
hyp3r1on a écrit le 24/02/2004 :
Bonjour,

dans un formulaire je demande l'age.
Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien bien
un chiffre.
Comment puis-je faire en php

D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste après
la verification du formulaire.

Pour les balise input j'ai pas de pb mais je vrois que "Value" ne fonctionne
pas avec les balise select
Merci de votre aide
Hyp3r1on


http://www.php.net/is-numeric

et retransmettre les valeurs reçues dans le premier formulaire vers le
deuxième ou alors proposer un bouton "back"

Nicklas
Le #540177
Le Tue, 24 Feb 2004 20:12:21 +0000, hyp3r1on a écrit :

Bonjour,

dans un formulaire je demande l'age.
Par sécurité, je souhaiterais tester ce champ pour savoir s'il contien bien
un chiffre.
Comment puis-je faire en php

D'autre part, j'utilise la balise Select dans le formulaire.
Comment faire pour que la valeur selectionnée par l'utilisateur reste après
la verification du formulaire.

Pour les balise input j'ai pas de pb mais je vrois que "Value" ne fonctionne
pas avec les balise select
Merci de votre aide
Hyp3r1on


J'utilise cette méthode sur mon site :
http://www.progweb.com
Les sources de mon site sont disponibles dans la section Projet.


Pour moi, le but est de contrôler par PHP les données, puis
de réafficher le formulaire pré-rempli avec les champs en
rouge et des messages d'erreurs.

Je sépare mon code PHP de mon code HTML.
Mais je n'utilise pas de système de template, je trouve que cela
ne sert à rien. PHP est lui-même un moteur de template...

<?php
// Je récupère les variables ; j'utlise la lib :
// http://www.progweb.com/modules/cours/consult.php?own=4&numR
$request->setMode(GET | POST);
$action = $request->List('action', array('add', 'sup', 'mod'));
$name = $request->Text('name');
$mail = $request->Mail('mail');
$birthday = $request->CheckDate('birthday', 'FR', '');
$url = $request->URL('url');


function getStyle($error) {
if ($error)
echo "InputError";
else
echo "InputForm";
}


switch ($action) {
case 'add':
$flag = 0;

if (empty($name)) {
$error_name = true;
$flag = 1;
}

if (empty($mail)) {
$error_mail = true;
$flag = 1;
}

if (empty($birthday)) {
$error_birthday = true;
$flag = 1;
}

if ($flag == 1) {
$name = stripslashes($name);
$name = htmlentities($name);

$mail = stripslashes($mail);
$mail = htmlentities($mail);

$birthday = stripslashes($birthday);
$birthday = htmlentities($birthday);

$url = stripslashes($url);
$url = htmlentities($url);

$action = 'add';
}
else {
$birthday = $parse->date2en($birthday, '-');

$query = "INSERT INTO ....";
$result = mysql_query($query);

$action = 'addfin';
}

break;

default:
$url = 'http://';
}

include('page.html');
?>

Fichier page.html :

<? if ($action == 'addfin'): ?>
<p>Donnée ajoutée...
<? else: ?>
<? if (($action == 'add') && ($flag == 1)): >
<p>Veuillez corriger les champs en rouge...
<? endif; ?>

<input type="hidden" name="action" value="add">
<p class="<?=getStyle($error_name)?>>Nom :
<input type="text" name="name" value="<?=$name?>">
<p class="<?=getStyle($error_mail)?>>Mail :
<input type="text" name="mail" value="<?=$mail?>">
<p class="<?=getStyle($error_birthday)?>>Naissance :
<input type="text" name="birthday" value="<?=$birthday?>">
<p class="<?=getStyle($error_url)?>>Page Web :
<input type="text" name="url" value="<?=$url?>"> <input type="submit"
name="Ajouter" value="Ajouter">
</form>
<? endif; ?>



Pour les champs select :
<option value="1" <?=isSelected('toto', 1)?>>Text 1</option>
<option value="2" <?=isSelected('toto', 2)?>>Text 2</option>
<option value="abc" <?=isSelected('toto', 'abc')?>>Text abc</option>
</option>

De même j'ai isChecked pour les checkbox...

Les variables peuvent être de tout type.

function isChecked($name, $value) {
if (is_array($name)) {
if (in_array($value, $name))
return 'checked';
}
else {
if ($name == $value)
if (($name === 0) || ($value === 0))
return ((string) $name === (string) $value) ? 'checked' : '';
else
return 'checked';
}
}


function isSelected($name, $value) {
if (is_array($name)) {
if (in_array($value, $name))
return 'selected';
}
else {
if ($name == $value)
if (($name === 0) || ($value === 0))
return ((string) $name === (string) $value) ? 'selected' : '';
else
return 'selected';
}
}


--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com

Nicolas Moyroud
Le #542113
Salut,

Euh Nicklas juste une remarque ne crois tu pas que tu aurais pu
regrouper tes 2 fonctions isSelected et isChecked en une seule de la
façon suivante :

function estChoisi($name, $value, $retour) {
if (is_array($name)) {
if (in_array($value, $name))
return "$retour";
}
else {
if ($name == $value)
if (($name === 0) || ($value === 0))
return ((string) $name === (string) $value) ? "$retour" : "";
else
return "$retour";
}
}

Et en appelant cette fonction de la façon suivante :
estChoisi('toto',1,'selected');
Pourquoi faire 2 fonctions quand une seule suffit ??

@+
Nicklas
Le #541655
Le Sun, 29 Feb 2004 14:47:17 +0000, Nicolas Moyroud a écrit :

Salut,

Euh Nicklas juste une remarque ne crois tu pas que tu aurais pu
regrouper tes 2 fonctions isSelected et isChecked en une seule de la
façon suivante :
(...)
Et en appelant cette fonction de la façon suivante :
estChoisi('toto',1,'selected');
Pourquoi faire 2 fonctions quand une seule suffit ??


Non, pour moi le but est de simplifier le code HTML.

Donc j'ai juste à faire dans mon cas :

<input type="checkbox" name="chbox" value="true" <?=isChecked('chbox',
'true')?>>

Et pour une liste :

<select...
<option value="1" <?=isSelected('toto', '1')?>>
...

Je veux avoir un appel le plus simple possible et le
plus explicite.

--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com

Poster une réponse
Anonyme