Contrôler plusieurs champ en php sans avoir 30 lignes ...

Bonjour,

Je cherche le moyen de contrôler plusieurs champs sans être obliger d'avoir 30 lignes de code...

En gros 3 champs sur une même ligne correspondant à date1, date 2 et prix.

Si date 1 remplit mais que date 2 vide et prix vide -> erreur
Si date 1 remplit ,date 2 remplit et prix vide -> erreur
Si date 1 remplit, date 2 vide et prix remplit -> erreur
Si date 1 vide mais que date 2 remplit et prix vide -> erreur
Si date 1vide mais que date 2 remplit et prix remplit -> erreur
etc..etc....et sa x10 !

Il n'y a pas un moyen plus rapide pour vérifier cela ?
Merci
 
Bonjour,

moi en général je procède de la manière suivante :

compteur = 0;

si date1 vide alors compteur + 1
si date2 vide alors compteur + 1
si prix vide alors compteur + 1

si compteur > 0 alors erreur
sinon ok
 
Seraph a dit:
Code:
foreach($_POST as $field=>$name)
	if (empty($name))
		$error = true;

:)

Faut faire attention, car si la personne à mis un espace, il considèrera le champs comme remplis et validera donc le formulaire :)
 
Oui bon là c'est le truc basique, tu peux l'améliorer comme tu veux après, en mettant des messages d'erreurs spécifiques à chaque champ ou autre !
 
merci de vos réponses ^^,

Je ne comprend pas du tout comment fonctionne le code suivant:
Code:
foreach($_POST as $field=>$name)
   if (empty($name))
      $error = true;
Si mes variables sont $champ1, $champ2 et $champ3, je suis censé procéder comment ?
Code:
if(isset($_POST["Valider"]))
{
....
$champ1 = mysql_real_escape_string($_POST["date1"]);
$champ2 = mysql_real_escape_string($_POST["date2"]);
$champ3 = mysql_real_escape_string($_POST["prix"]);
....
//mes conditions
if(machintruc != .....){
.....
else if(ICI JE VERIFIE $champ1, $champ2 et $champ3)
si un ou 2 des 3 champs est remplit
je balance l'erreur
....
Merci
 
Bah ça change rien...
La boucle sert juste à vérifier, au lieu de $error = true tu mets tes :

$champ1 = mysql_real_escape_string($_POST["date1"]);
$champ2 = mysql_real_escape_string($_POST["date2"]);
$champ3 = mysql_real_escape_string($_POST["prix"]);
....
 
Merci Seraph, mais il y a un truc que je ne comprend toujours pas ...
foreach($_POST as $field=>$name) , à quoi correspond $_POST, $field et =>$name?
J'ai lus les exemples sur http://fr.php.net/foreach mais je ne suis pas plus inversé ... je ne pige pas ce que sa fait !
 
Pour ne plus se prendre la tête avec des formulaires le mieux pour moi est d'utiliser des classes facilitant le travail :

Exemple avec la classe PEAR HTML Quick Form :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>formulaire</title>
</head>
<body>
<?php
set_include_path(get_include_path() . ";c:\php\pear");
require_once "HTML/QuickForm.php";

$form = new HTML_QuickForm('frmTest', 'post');
$form->addElement('text', 'Pseudo', 'Votre pseudo : ');
$form->addElement('text', 'Nom', 'Votre nom : ');
$form->addElement('text', 'Email', 'Votre adresse email : ');
$options = array(
'language' => 'fr',
'format' => 'dMY',
'minYear' => 2001,
'maxYear' => 2005
);
$form->addElement('date', 'date', 'votre date de naissance : ', $options);
$form->addRule('Pseudo', 'Vous devez saisir un pseudo', 'required', '', 'client');
$form->addRule('Nom', 'Vous devez saisir un nom', 'required', '', 'client');
$form->addRule('Email', 'Vous devez saisir une adresse Email', 'required', '', 'client');
$form->addRule('Pseudo', 'Votre pseudo doit avoir entre 6 caractères et 10 caractères', 'rangelength', array(6,10), 'client');
$form->addRule('Email', 'Vous devez saisir une adresse email valide', 'email', '', 'client');
$form->applyFilter('Nom','trim') ;
$form->applyFilter('Pseudo','trim') ;
$form->setRequiredNote('<span style="color: #ff0000">*</span> = champs obligatoires');
$form->setJsWarnings('Erreur de saisie','Veuillez corriger');
$form->addElement('reset', 'bouton_clear', 'Effacer');
$form->addElement('submit', 'bouton_effacer', 'Envoyer');
if ($form->validate()) {
echo "Toutes les règles sont respectées<br>";
}
else {
$form->display();
}
?>
</body>
</html>
Source : http://php.developpez.com/cours/pear/html-quickform/

Évidemment comme toute boite à outils si on veut sortir des clous ça demande un peu d'apprentissage mais ça facilite grandement la vie.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut