Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester si un champ est un nombre

8 réponses
Avatar
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

8 réponses

Avatar
Thibaut Allender

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

Avatar
Savut
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" wrote in message
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


Avatar
Nonobis
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

Avatar
Eric Hoffmann
essais "is_integer(age)";
"hyp3r1on" a écrit dans le message de
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


Avatar
Jedi121
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"

Avatar
Nicklas
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; ?>

<form method='POST' action='page.php'>
<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 :
<select name="toto" ...>
<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

Avatar
Nicolas Moyroud
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 ??

@+
Avatar
Nicklas
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