Discussion: isset
Afficher un message
Vieux 06/10/2007, 22h25   #26
Bruno Desthuilliers
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: isset

yoyo@invalid.news.free.fr a écrit :
>> Le 06/10/2007 00:12, yoyo@invalid.fr a écrit :
>>>> Avant de savoir s'il est vide, il faut savoir s'il existe, et s'il est
>>> justement est ce que si une variable esst vide est ce qu'elle existe dans
>>> la cas ou l'internaute validerait un post vide.

(snip)
>
> désolé je me suis peux être mal exprimé.
>
> j'ai eu le cas sur un script ou j'ai essayé de faire une isset suivi d'un
> empty imbriqué dans le premier if.
>
> je me demandais si le formulaire est posté vide est ce que les variables
> testé par isset existe quand même,


C'est dans la spec HTTP, tout ça. Et la réponse est non. S'il n'y a
aucune valeur positionnée pour un champ de formulaire, ce champ
n'apparaitra pas dans la requête.


> ci joint un exemple de code.
>
> if(isset($_POST['sexe']) && (isset($_POST['nom'])) &&
> (isset($_POST['prenom'])) && (isset($_POST['code_postal']))
> &&(isset($_POST['adresse'])) && (isset ($_POST['ville'])) &&(
> isset($_POST['telephone'])) &&(isset($_POST['courriel'])) &&
> (isset($_POST['message']))){
> $sexe=$_POST['sexe'];
> $nom=$_POST['nom'];
> $prenom=$_POST['prenom'];
> $cp=$_POST['code_postal'];
> $adresse=$_POST['adresse'];
> $ville=$_POST['ville'];
> $telephone=$_POST['telephone'];
> $mail=$_POST['courriel'];
> $demande=$_POST['message'];
>





>
> $erreur = 0;
> $message_erreur="Veuillez compléter";
>
> if (empty($_POST['nom']))
> {
> echo "<br/><p style= \"color:red;\"> $message_erreur votre nom <br>";
> $erreur = 1;
> }
> if (empty($_POST['prenom']))
> {
> echo "<br/><p style= \"color:red;\"> $message_erreur votre prénom
> <br> ";
> $erreur = 1;
> }
>

(snip)

Doux Jésus...

Tu connais les notions de boucles, de tableau associatifs et de fonction
de rappel ? Parce que franchement, ça te simplifierait la vie...

principe:
1/ tu stockes dans tableau associatif les paires nom_du_champ =>
[nom_fonction_validation, valeur_defaut]. Les fonctions de validation
prennent en entrée un nom de champ, un tableau ($_POST dans ce cas), et
une valeur de défaut optionnelle (NULL par defaut)) et retournent une
paire [valeur, message_erreur].

2/ au retour du post, tu itères sur ces paires, et pour chacune tu
appelle la fonction de validation avec les données qui vont bien, et tu
stocke les résultat dans deux tableaux associatifs 'valeurs' et
'erreurs', ie:

$valeurs = array();
$erreurs = array();
foreach($champs as $nom=>$definition) {
list($valider, $defaut) = $definition;
list($val, $err) = $valider($nom, $_POST, $defaut);
$valeurs[$nom] = $val;
$erreurs[$nom] = $err;
}

2/bis : évidemment, il y a des cas où tu dois faire des validation plus
complexes. Il suffit alors de les ajouter *après* cette boucle - au
moins, le plus gros est fait.

3/ après ça, il suffit de tester le tableau $erreurs pour savoir si le
formulaire est valide.

Si oui, tu n'a plus qu'à soit insérer/mettre à jour tes données d'après
le tableau $valeurs (la construction de la requête SQL qui va bien étant
assez triviale grâces aux fonctions de traitement des tableaux).

Sinon, tu rappelles le fichier 'template' (ie: mélange de php et html)
qui défini ton formulaire en lui passant les deux tableaux, et tu
affiches le resultat.
  Réponse avec citation
 
Page generated in 0,06284 seconds with 9 queries