par
sens01 » 02 juin 2012, 22:34
Bonjour,
je veut vérifier si l'âge correspond bien à un nombre, qu'il est entier et positif le problème c'est que si j'ai bien compris mon formulaire renvoie tout en type chaîne de caractères alors je fais comment si je veut vérifier qu'on m'envoie bien un nombre et non pas "salut" à la place par exemple? c'est possible?
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {
$affiche_formulaire = true;
}
else if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
// tableau qui contiendra le récap de tout ce que la personne a posté
$message_recapitulatif = array();
// chaque erreur sera stockée comme élément de ce tableau :
$message_erreur = array();
// test si age n'existe pas
if (!isset ($_POST['age']) ) {
$message_erreur[] = 'Vous n\'avez pas entré votre age, veuillez remplir le formulaire';
}
// test si age n'est pas une chaine
// test si age est une chaine vide
// test si age n'est pas un nombre
else if (!is_string ($_POST['age']) ) {
$message_erreur[] = 'Chaîne de caractères interdites';
}
// test si age n'est pas entier
// test si age n'est pas positif
else if (!is_int ($_POST['age']) || $_POST['age'] < 13 ) {
$message_erreur[] = 'Vous êtes trop jeune';
ceil ($_POST['age']);
}
// ok
else {
$age = trim($_POST['age']);
$message_recapitulatif[] = 'Age : ' . $age . ' ';
}
if (empty($message_erreur)) {
$confirmation = 'Envoi OK'; // si le tableau d'erreur est vide
$affiche_formulaire = false; // alors on fabrique un message de confirmation
// le formulaire ne sera pas réaffiché
} // sinon
// on fabrique un message d'erreur
else {
$affiche_formulaire = true;
$affiche_erreur = implode(' , ', $message_erreur);
print_r ($affiche_erreur);
} // on reaffiche le formulaire
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulaire</title>
</head>
<body>
<!-- affichez le message -->
<!-- si on affiche le formulaire ...
faire le if -->
<?php
if ($affiche_formulaire == true) {
echo '<form action="index.php" method="post">
<table cellpadding="10" border="1">
<tr>
<th>Age</th>
<td><input type="text" name="age" /></td>
</tr>
<tr>
<th>Rien oublié?</th>
<td><input type="submit" value="Envoyer" /></td>
</tr>
</table>
</form>';
}
else {
echo implode (' ',$message_recapitulatif);
echo $confirmation;
}
?>
</body>
</html>
Bonjour,
je veut vérifier si l'âge correspond bien à un nombre, qu'il est entier et positif le problème c'est que si j'ai bien compris mon formulaire renvoie tout en type chaîne de caractères alors je fais comment si je veut vérifier qu'on m'envoie bien un nombre et non pas "salut" à la place par exemple? c'est possible?
[php]<?php
if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {
$affiche_formulaire = true;
}
else if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
// tableau qui contiendra le récap de tout ce que la personne a posté
$message_recapitulatif = array();
// chaque erreur sera stockée comme élément de ce tableau :
$message_erreur = array();
// test si age n'existe pas
if (!isset ($_POST['age']) ) {
$message_erreur[] = 'Vous n\'avez pas entré votre age, veuillez remplir le formulaire';
}
// test si age n'est pas une chaine
// test si age est une chaine vide
// test si age n'est pas un nombre
else if (!is_string ($_POST['age']) ) {
$message_erreur[] = 'Chaîne de caractères interdites';
}
// test si age n'est pas entier
// test si age n'est pas positif
else if (!is_int ($_POST['age']) || $_POST['age'] < 13 ) {
$message_erreur[] = 'Vous êtes trop jeune';
ceil ($_POST['age']);
}
// ok
else {
$age = trim($_POST['age']);
$message_recapitulatif[] = 'Age : ' . $age . ' ';
}
if (empty($message_erreur)) {
$confirmation = 'Envoi OK'; // si le tableau d'erreur est vide
$affiche_formulaire = false; // alors on fabrique un message de confirmation
// le formulaire ne sera pas réaffiché
} // sinon
// on fabrique un message d'erreur
else {
$affiche_formulaire = true;
$affiche_erreur = implode(' , ', $message_erreur);
print_r ($affiche_erreur);
} // on reaffiche le formulaire
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulaire</title>
</head>
<body>
<!-- affichez le message -->
<!-- si on affiche le formulaire ...
faire le if -->
<?php
if ($affiche_formulaire == true) {
echo '<form action="index.php" method="post">
<table cellpadding="10" border="1">
<tr>
<th>Age</th>
<td><input type="text" name="age" /></td>
</tr>
<tr>
<th>Rien oublié?</th>
<td><input type="submit" value="Envoyer" /></td>
</tr>
</table>
</form>';
}
else {
echo implode (' ',$message_recapitulatif);
echo $confirmation;
}
?>
</body>
</html>[/php]