traiter un formulaire créé dynamiquement

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 : traiter un formulaire créé dynamiquement

par Cyrano » 19 août 2005, 19:01

Pour démarrer une session, c'Est pas dur: en tout début de fichier, avant tout envoi vers le navigateur, tu ajoutes après le <?php :
<?php
session_start();
//... suite du code ...
Attention, même pas un espace avant le <?php .
En mettant ça sur toutes les pages, la session le prolonge de page en page et les valeurs sont conservées au fil de la navigation.

Au besoin, on remet à zéro avec un unset() sur la variable de session.

par Melchior » 19 août 2005, 18:49

Ce que tu peux faire lors de la génération du formulaire, c'est alimenter un tableau du genre:
$champs = array("text" => 0, "textarea" => 0, "checkbox" => 0, "radio" => 0, "file" =>0);
$champ["text"]++;
Éventuellement, on pourrait même imaginer ce même tableau à 2 dimensions stockant d'une part le nombre de champs, d'autre part les noms attribués.

Mieux encore, tu stockes ça dans une variable de session, comme ça, même plus besoin de champ caché. Résultat, tu consultes ton tableau pour traiter selon leur nom, leur type et leur nombre les différents champs de ton formulaire.
Pas besoin de stocker les noms utilisés étant donné qu'ils sont imposés lors de la création du formulaire (text0, text1, text2...) par contre, je agrde l'idée du tableau à 2 dimensions pour stocker le nombre de cases dans mes groupes de checkbox^^

Sinon, comme j'ai fais le code du formulaire avant d'avoir appris à faire des sessions, je n'y avais pas du tout penser, et c'est vrai que ça simplifie grandement le problème! (surtout que la session est générée pour faire autre chose dans tous les cas...)

Merci pour la qualité des réponses et la rapidité.
Je n'ai plus besoin de rien^^

par Cyrano » 19 août 2005, 18:35

Ce que tu peux faire lors de la génération du formulaire, c'est alimenter un tableau du genre:
$champs = array("text" => 0, "textarea" => 0, "checkbox" => 0, "radio" => 0, "file" =>0);
Au fil de ta construction dynamique, tu incrémentes les différents pointeurs, par exemple en rajoutant un champ type text:
$champ["text"]++;
Éventuellement, on pourrait même imaginer ce même tableau à 2 dimensions stockant d'une part le nombre de champs, d'autre part les noms attribués.

Mieux encore, tu stockes ça dans une variable de session, comme ça, même plus besoin de champ caché. Résultat, tu consultes ton tableau pour traiter selon leur nom, leur type et leur nombre les différents champs de ton formulaire.

par Melchior » 19 août 2005, 18:28

Merci Cyrano,

en fait, j'utilise actuellement un champ caché pour stocker le nombre de champ, je vais en rajouter un pour renseigner sur les types de champs.

Je pensais que cette méthode était trop lourde et qu'il était préférable de faire autrement, mais puisque qu'un grand manitou du php vient de penser à la meme astuce que moi, je me dit que ça doit être bon! :D

Cependant, j'aimerait bien créer un tableau regroupant tous mes champs, j'ai entendu je sais plus trop où que c'était possible, mais j'arrive pas à remettre la main dessus.

par Cyrano » 19 août 2005, 18:03

À priori je dirais oui: en générant ton formulaire, tu peux aussi générer des champs cachés qui eux seront toujours les mêmes quels que soient le nombre de champs visibles, mais dedans tu peux avoir un pointeur qui numérote les champs texte, les textarea etc... et si tu établis une règle de nommage de tes champs précise, avec les noms et les nombres des champs cachés, tu peux relativement facilement gérer tes validations en PHP en reconstruisant dans des boucles les listes de champs par type.

traiter un formulaire créé dynamiquement

par Melchior » 19 août 2005, 16:48

Je vous explique le problème:

J'ai besoin de traiter d'une manière gnérale un formulaire dont j'ignore à l'avance le nombre de champ et le type des champs (mais qui respecte tout de meme certaine règles de construction...)

d'où quelques questions:
1)Est-ce qu'il existe l'équivalent php de la fonction javascript qui renvoie le nombre d'éléments d'un formulaire?
2)Est-ce qu'il est possible de savoir à quel type de champ on a affaire quand on le traite?
3)une question qui peut venir par la suite: peut ton faire en sorte que les différents champs soit regroupés dans des tableaux?
ex: on appelerait tous les textearea par un fonction du genre:

for ($i=0; $i<count($_POST["mon_tableau_de_textarea"]);$i++)
{ // traitement de $_POST["mon_tableau_de_textarea"][$i] }

merci