Traitement formulaire de plusieurs champs

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 : Traitement formulaire de plusieurs champs

Re: Traitement formulaire de plusieurs champs

par massine » 18 nov. 2020, 13:05

Excellent , merci beaucoup c'est exactement ce que je cherchais .

Re: Traitement formulaire de plusieurs champs

par @rthur » 18 nov. 2020, 11:20

Je te parlais d'un seul tableau avec l'ensemble de tes champs.

Pour chaque champ tu fais une ligne comme celle-ci :
$tablo_champs[]=array('name'=>'code_p_boutique', 'pattern'=>'#^[0-9]{5}$#', 'nom_fr'=>'Code postal boutique');
Et ensuite un
foreach($tablo_champs as $champ) {
     // Ton traitement de verif (je te laisse adapter)
     if (!isset($_POST[$champ['name'])) die("Le champ ".$champ['nom_fr']." n'a pas été renseigné");
     if (!preg_match($champ['pattern'],$_POST[$champ['name'])) die("Le champ ".$champ['nom_fr']." a une valeur incorrecte.");
}
le problème c'est que si l'utilisateur supprime le champ client_p_code (avec la console) je vais avoir une variable non définie
Si un utilisateur fait une action anormale/non souhaitable, c'est plutôt normal qu'il y ait un message d'erreur. Tu peux faire un isset() si tu veux vérifier que le champ est renseigné.

Re: Traitement formulaire de plusieurs champs

par massine » 17 nov. 2020, 21:19

Merci pour votre réponse :
Voici ce que j'ai comme solution

Code : Tout sélectionner

$codes=['code_p_client'=>$code_p_client,'code_p_boutique'=>$code_p_boutique]; foreach ($codes as $key => $value) { if ( !empty($value)) { if(preg_match('#^[0-9]{5}$#',$value)) { $codes[$key]=htmlspecialchars($value); } else { $keyCode=explode('_', $key); $erreur[$key]="Le champ code postal ".$keyCode[2]." n'est pas valide"; } } else { $codes[$key]=null; } }


le problème c'est que si l'utilisateur supprime le champ client_p_code (avec la console) je vais avoir une variable non définie

Re: Traitement formulaire de plusieurs champs

par @rthur » 17 nov. 2020, 21:00

Tu peux faire un tableau qui contiendrait pour chaque champ de ton formulaire :
- le nom de ton champ de formulaire
- le pattern associé
- le libellé de ton champ en français (pour afficher un message d'erreur clair)

Ensuite un foreach sur chaque élément de ton tableau au sein duquel tu fais la vérification.

Traitement formulaire de plusieurs champs

par massine » 17 nov. 2020, 20:16

Bonjour ,

J'ai un formulaire de plus de 4O champs(input, textarea, select ...) et dans ce formulaire je possède des champs qui ont les mêmes conditions de traitement exemple:

"code postal client":

Code : Tout sélectionner

if(isset($code_p_client))) { if(preg_match('#^[0-9]{5}$#',$code_p_client)) { $code_p_client=htmlspecialchars($code_p_client); } else { $erreur="Le champ code postal client n'est pas valide"; } }else { $code_p_client=null; }
code postal boutique :

Code : Tout sélectionner

if(isset($code_p_boutique))) { if(preg_match('#^[0-9]{5}$#',$code_p_boutique)) { $code_p_client=htmlspecialchars($code_p_boutique); } else { $erreur="Le champ code postal boutique n'est pas valide"; } }else { $code_p_boutiquet=null; }
mon code fonction parfaitement , le problème c'est que actuellement je traite chaque champs tout seul :| (40 champs beaucoup de code qui se répété ).


S'il vous plait qlq'un pourrait me donner une idée sur comment je peux simplifier le traitement .

Merci par avance .