Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1628 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer avec une seule fonction champs de formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer avec une seule fonction champs de formulaire

n°1339122
juanetfann​y
Posté le 04-04-2006 à 20:32:59  profilanswer
 

Bonjour à tous,
 
Je bute sur un petit problème mais je n'arrive plus à raisonner clairement  :pt1cable:  Je m'explique. J'ai créé plusieurs fonctions basiques de façon à créer des formulaires html, de la forme :

Code :
  1. function FormCreate($formname='Form', $action, $method='POST', $encryption='') {
  2.   echo '<form method="' . $method . '" action="' . $action . '" name="' . $formname . '">';
  3. }
  4. function FormEnd() {
  5.   echo '</form>';
  6. }
  7. function FormInput ($label, $name, $size, $maxlenght, $needed) {
  8.   $result_forminput  = '<label for="' . $name . '">' . $label . '<input type="text" id="' . $name;
  9.   $result_forminput .= '" size="' . $size . '" maxlenght="' . $maxlenght . '" />';
  10.   $result_forminput .= '</label>';
  11.   echo $result_forminput;
  12. }
  13. function FormSubmit($namesubmit, $labelsubmit) {
  14.   $result_formsubmit  = '<input type="submit" class="checkform" ';
  15.   $result_formsubmit .= 'name="' . $namesubmit . '" value="' . $labelsubmit . '" />';
  16.   echo $result_formsubmit;
  17. }


 
qui s'utilisent de cette façon :

Code :
  1. FormCreate('Formulaire', 'valid_user.php');
  2. FormInput('Nom : ', 'nom', '10', '10', 1);
  3. FormSubmit('envoi', 'Valider');
  4. FormEnd();


Jusque là, rien de compliqué. Ce que je souhaite, c'est créer une fonction à placer au début du script, qui récupère la valeur 'envoi' afin de tester la validation du formulaire, puis de reprendre chacun des champs pour les traiter correctement (suppression des espaces, test des éléments obligatoires non renseignés, test adresse email valide, etc...).
 
J'imagine que chaque appel aux fonctions de création de formulaire doit ajouter des entrées dans un tableau (chaque ligne contenant le nom du champ, son attribut (obligatoire = 1; non obligatoire = 0). Ce dit tableau devant être repris par la fonction de traitement. Voilà l'idée mais je ne vois pas comment concrétiser tout ceci en code pur. Si quelqu'un avait ne serait-ce qu'un début de solution, je serais ravi.
 
Merci d'avance en tout cas.  :jap:  
 
 :hello:

mood
Publicité
Posté le 04-04-2006 à 20:32:59  profilanswer
 

n°1339197
nargy
Posté le 04-04-2006 à 22:17:12  profilanswer
 

tu mélange plusieurs choses...
 
Un début de solution:

Code :
  1. $formulaire_print=array();
  2. $formulaire_vars=array();
  3. /* ...... */
  4. function FormInput ($label, $name, $size, $maxlenght, $needed) {
  5. // récupérer valeur
  6. global $$name;
  7. $$name=stripslashes($$name);
  8. $result_forminput  = '<label for="' . $name . '">' . $label . '<input type="text" id="' . $name;
  9. $result_forminput .= '" size="' . $size . '" maxlenght="' . $maxlenght . '" value="' . htmlentities($$name) . '"/>';
  10. $result_forminput .= '</label>';
  11. global $formulaire_vars, $formulaire_print;
  12. $formulaire_vars[$name]=$$name;
  13. $formulaire_print[]=$result_forminput;
  14. }
  15. function FormEnd($fct) {
  16. $valid=$fct();
  17. if(!$valid) {
  18.   global $formulaire_print;
  19.   foreach($formulaire_print as $html)
  20.    echo $html;
  21.   echo '</form>';
  22. }
  23. return $valid;
  24. }
  25. function verifForm()
  26. {
  27. global $formulaire_vars;
  28. $name=$formulaire_vars['name'];
  29. $envoi=$formulaire_vars['envoi'];
  30. return strlen($name) && strlen($envoi);
  31. }
  32. FormCreate('Formulaire', 'valid_user.php');
  33. FormInput('Nom : ', 'nom', '10', '10', 1);
  34. FormSubmit('envoi', 'Valider');
  35. if(FormEnd('verifForm'))
  36. {
  37. echo 'envoi ok';
  38. }


Message édité par nargy le 04-04-2006 à 22:19:14
n°1339201
nargy
Posté le 04-04-2006 à 22:19:43  profilanswer
 

edit: yavai des bugs, yen a peut être encore...

n°1339234
juanetfann​y
Posté le 04-04-2006 à 22:53:29  profilanswer
 

:jap:  de ta contribution. J'ai pas encore tout compris mais je vais étudier ça en détail... Mais quelle est l'utilité d'avoir une variable globale (global $$name; ). Une variable, par défaut, n'est-elle pas visible de tout le script ?? Pour passer mes variables de formulaire, je peux faire passer le tableau dans la variable $_POST[] ??  
 
:hello:


Message édité par juanetfanny le 04-04-2006 à 22:59:52
n°1339236
nargy
Posté le 04-04-2006 à 22:56:07  profilanswer
 

le principe, c est

  • de mettre l html du formulaire dans une variable globale,
  • de mettre le contenu des variables de formulaire dans une autre variable globale,
  • avoir une fonction de vérification,
  • appeler FormEnd avec en paramètre le nom de la fonction de vérif, si la vérif nest pas ok, afficher le formulaire

n°1339260
juanetfann​y
Posté le 04-04-2006 à 23:14:23  profilanswer
 

En passant, ça correspond à quoi la syntaxe :

Code :
  1. $$name


(le double $$) ???


Message édité par juanetfanny le 04-04-2006 à 23:15:17
n°1339263
nargy
Posté le 04-04-2006 à 23:19:10  profilanswer
 

exemple:
 
$hello='1';
echo $hello; // affiche 1, normal quoi
 
$nomvariable='hello';
$$nomvariable='2';// mets 2 dans $hello
echo $hello; // affiche 2!
 
il y a de la doc sur php.net

n°1339265
nargy
Posté le 04-04-2006 à 23:20:45  profilanswer
 

remarque que à la place tu peut utiliser $_GET[] ou $_POST[] en sauvegardant la méthode utilisée par FormCreate()

n°1339270
juanetfann​y
Posté le 04-04-2006 à 23:24:07  profilanswer
 

ok, merci à toi de toutes ces infos  :wahoo:  
 
Je vais potasser ça demain et si j'ai encore un souci, je reviens ! Mais je vais simplifier le truc parce que tu as été au delà de ce que je souhaite faire  :)  
 
En fait, mettre l'html du formulaire dans une variable globale ne m'est pas forcément indispensable je pense. Par contre, le stockage des variables est intéressant.
 
 :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer avec une seule fonction champs de formulaire

 

Sujets relatifs
probléme avec la fonction rmdirRequête SQL sur plusieurs champs en même temps
verification formulaire avant enregistrement Mysql[VBA] Passer un paramêtre dans la fonction
Fonction récursive de destruction d'un repertoire et son sous ensembleImpossible de lire un cookie avec la fonction include?
[C] Faire appel à une fonction dans une autre fonctionAffectation de plusieurs variables dans une seule.
Modifier un champ en fonction de la dateRecuperer une piece jointe avec javamail
Plus de sujets relatifs à : Récupérer avec une seule fonction champs de formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR