condition avec if else OU avec plusieurs valeurs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : condition avec if else OU avec plusieurs valeurs

par FredoMkb » 23 mai 2008, 16:14

Re...
avec ma methode je vais un peu plus loin en general en mettant une class sur le label
<label for="nom"<?=($erreur['nom'])?' class="obligatoire"':''?>>Nom *:</label>
et un petit coup de css pour mettre en valeur les erreurs ;)
En effet, c'est pas mal !

Il y a aussi la possibilité d'économiser un test conditionnel, avec quelque chose du genre :
<label for="nom" class="error<? echo (int)isset($erreur['nom']); ?>">Nom *:</label>
Il suffit de mettre les sélecteurs ".error0" et ".error1" dans les Css pour formater les labels en conséquence...

Sur mon exemple cela donnerait :
<label for="nom" class="error<? echo (int)empty($nom); ?>">Nom *:</label>
;)

par steph29 » 23 mai 2008, 14:45

avec ma methode je vais un peu plus loin en general en mettant une class sur le label
<label for="nom"<?=($erreur['nom'])?' class="obligatoire"':''?>>Nom *:</label>
et un petit coup de css pour mettre en valeur les erreurs ;)

je ne l'avais pas preciser lors de mon premier post puisque le but etait de reproduire a peu pres le fonctionnement du script de depart

par FredoMkb » 23 mai 2008, 14:35

Bonjour :)

Dans le même esprit que Steph29...

Admettons un formulaire de contact, avec les champs : "nom", "prénom", "email", "sujet" et "message", voici ce que donnerait un petit test sur le remplissage de l'ensemble de ces champs :
// Variables avec les valeurs issues du formulaire
$nom = $_POST['nom']; // vide
$prenom = $_POST['prenom']; // "Gégé"
$email = $_POST['email']; // vide
$sujet = $_POST['sujet']; // vide
$message = $_POST['message']; // "Coucou les amis :-)"

$champsVides = array();
if (empty($nom)) { $champsVides[] = 'non'; }
if (empty($prenom)) { $champsVides[] = 'prénom'; }
if (empty($email)) { $champsVides[] = 'email'; }
if (empty($sujet)) { $champsVides[] = 'sujet'; }
if (empty($message)) { $champsVides[] = 'message'; }

$messageErreur = "Tous les champs ont été remplis";
if (!empty($champsVides)) { $messageErreur = 'Veuillez remplir les champs suivants : "'.implode('", "', $champsVides).'".'; }

echo $messageErreur; // Veuillez remplir les champs suivants : "non", "email", "sujet".
à+ :)

par steph29 » 23 mai 2008, 12:13

<?php
$erreur=array();
if (empty($_POST["nom"])) $erreur['nom']="Veuillez remplir le champ du nom";
if (empty($_POST["prenom"])) $erreur['prenom']="Veuillez remplir le champ du prénom";

if (count($erreur)==0){

}

echo implode("<br />",$erreur);
?>

condition avec if else OU avec plusieurs valeurs

par Cypher_PHP » 23 mai 2008, 11:13

BONJOUR

je viens poster.
je voulais vérifier si les internautes n'oublie pas de remplir l'un des 3 champs dans un formulaire
donc j'utilise la condition "if else ou"
le problème se pose ici:
quand un champ n'est pas vide, on informe uniquement sur ce champ vide et non les trois champs à la fois.
donc je cherche une solution pour afficher le résultat quelque soit le champ vide.


pour info, j'ai pas encore testé.

voici le code php (allégé sans le code de form):

<?php

$mess_nomind ="Veuillez remplir le champ du nom";
$mess_prenonomind ="Veuillez remplir le champ du prénom";
$mess_emailind ="Veuillez remplir le champ d'email";

if (!empty($nomind)|| !empty($prenomind) || !empty($emailind) ) 
{
// si pas vide, on valide
<input name="submit" class="Style2" value="valider" type="submit">
<input name="Submit2" class="Style2" value="Réinitialiser" type="reset">	
}
// sinon on informe

echo $mess_nomind;
echo $mess_prenonmind;
echo $mess_emailind;

?>

merci à vous