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

Récupérer avec une seule fonction champs de formulaire - PHP - Programmation

Marsh Posté le 04-04-2006 à 20:32:59    

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:

Reply

Marsh Posté le 04-04-2006 à 20:32:59   

Reply

Marsh Posté le 04-04-2006 à 22:17:12    

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
Reply

Marsh Posté le 04-04-2006 à 22:19:43    

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

Reply

Marsh Posté le 04-04-2006 à 22:53:29    

: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
Reply

Marsh Posté le 04-04-2006 à 22:56:07    

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

Reply

Marsh Posté le 04-04-2006 à 23:14:23    

En passant, ça correspond à quoi la syntaxe :

Code :
  1. $$name


(le double $$) ???


Message édité par juanetfanny le 04-04-2006 à 23:15:17
Reply

Marsh Posté le 04-04-2006 à 23:19:10    

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

Reply

Marsh Posté le 04-04-2006 à 23:20:45    

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

Reply

Marsh Posté le 04-04-2006 à 23:24:07    

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:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed