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


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

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

Message le Sam Sep 20, 2008 11:52

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

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Message le Sam Sep 20, 2008 11:56

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
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 405
Inscription: 2 Avr 2006

Message le Sam Sep 20, 2008 12:08

Code: Tout sélectionner
foreach($_POST as $field=>$name)
   if (empty($name))
      $error = true;


:)

Duffy
WRInaute discret
WRInaute discret
 
Messages: 80
Inscription: 6 Déc 2007

Message le Sam Sep 20, 2008 14:11

Seraph a écrit:
Code: Tout sélectionner
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 :)


Seraph
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 405
Inscription: 2 Avr 2006

Message le Sam Sep 20, 2008 16:50

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 !


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Sam Sep 20, 2008 17:00

merci de vos réponses ^^,

Je ne comprend pas du tout comment fonctionne le code suivant:
Code: Tout sélectionner
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: Tout sélectionner
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


Seraph
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 405
Inscription: 2 Avr 2006

Message le Sam Sep 20, 2008 17:15

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"]);
....


Seraph
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 405
Inscription: 2 Avr 2006

Message le Sam Sep 20, 2008 17:56

D'ailleurs non... pas exactement !
Mais le principe est le même ! :)


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Message le Dim Sep 21, 2008 17:20

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 !


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Lun Sep 22, 2008 8:33

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.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité