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
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
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
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";
}
ceci dit, c'est un probleme html, pas php...
--
freelance + web|system developer|designer
+ 32 496 26 75 76 + http://www.capsule.org
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,
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).
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>
De rien
Nonobis
"hyp3r1on" news:c1g66c$co$
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"
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
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 ??
@+
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