Formulaires

mardi 5 juillet 2011
par  JMG
popularité : 2%

Mes formulaires sont construits avec la méthode Charger Vérifier Traiter, deux fichiers form.html et form.php.

Ils sont appelés dans un article par <formulaire|form>, jusque là rien que du classique.

  Réinitialisation de la page

Dans une partie traitement écrite en php, le texte apparaissait au dessus de la page d’envoi, et il y a un post dans le forum sur cette question.



L’"ajaxisation" a apporté la solution :

  1. <div class="ajax">
  2.  
  3. <formulaire|mon_form>
  4.  
  5. </div>

Télécharger

avec la mention à la fin de form.php :

  1. return array(
  2.  
  3. "editable" => false,
  4.  
  5. "message_ok" =>"Bla bla de circonstance",
  6.  
  7. );

Télécharger

Bien sûr, dans le cas général, si vous voulez que le formulaire réapparaisse, true au lieu de false ; s’il y a des boucles ou balises dans le fichier html, voir solution chez Marcimat "Programmer avec SPIP"

(rappel : pour mettre du code html dans un article sans qu’il soit interprété, insérer entre deux balises <code> et </code> ou employer &lt; et &gt; ; dans cet article le plugin "Coloration Code" est à l’oeuvre...)

  Passage variable dans un formulaire

Une méthode consiste à mettre les variables dans les fonctions php CVT
et à appeler le formulaire par la balise

  1. #FORMULAIRE_monform{ma_variable}

dans un squelette

Le problème est de résoudre la difficulté en appelant le formulaire depuis un article car la syntaxe :

  1. <formulaire|form{ma_variable}>

n’est pas comprise (bien dommage !!)

A tester : appeler le formulaire via un modèle.

Un problème consiste à récupérer le numéro de l’article où se trouve le formulaire

Ce numéro se trouve dans l’url

La première idée est de mettre au début de "charger" :

  1. $id_article = $_GET ['ma_variable'];

Cela fonctionne dans la partie privée où on a effectivement id_article=XX (XX est le numéro de l’article

Mais dans la partie publique ça marche pas, on a "articleXX".

Le problème est résolu comme ça :

  1. function url_actuelle(){
  2.  
  3. return $_SERVER["REQUEST_URI"];
  4. }
  5.  
  6.  
  7. function xxxx(){
  8. $url = url_actuelle();
  9. $url = parse_url($url);
  10. $str = $url['query'];
  11. //$url['query'] doc ici : http://www.php.net/manual/fr/function.parse-url.php
  12. //echo $str;
  13. preg_match('#[0-9]+#', $str, $matches);
  14. //print_r($matches);
  15. $nombre = $matches [0];
  16. //echo $nombre;
  17. //echo intval($nombre);
  18. $xxxx = sql_getfetsel('yyyy','spip_articles','id_article='.intval($nombre));
  19. return $xxxx;
  20. }
  21.  
  22. function formulaires_prerempli_charger_dist (){
  23.  
  24. $valeurs = array('form_nom' => xxxxt());

Télécharger

  L’instruction EXIT

Tout bête : le fais l’include d’une page HTML dans la partie traiter du formulaire, mais celui-ci continue son exécution pour donner un affichage peu satisfaisant.

Solution : instruction EXIT à la fin de la page inclue et juste avant une instruction de redirection

De la doc :

 Passer du PHP dans spip

Utiliser un formulaire, éventuellement avec des champs cachés


Agenda

<<

2018

 

<<

Septembre

 

Aujourd’hui

LuMaMeJeVeSaDi
272829303112
3456789
10111213141516
17181920212223
24252627282930
Aucun évènement à venir les 6 prochains mois