Drupal – Comment récupérer les données d’un webform après soumission

Webform est un module Drupal très performant et complet qui permet de créer des formulaires. Le seul hic c’est que la landing page, la page de remerciements qui est affichée après la soumission d’un formulaire, n’est pas très configurable et ne permet pas d’afficher les données du formulaire fraîchement soumis.

Pour récupérer ces données et les afficher il faut modifier le fichier normalement situé dans /modules/webform/templates/webform-confirmation.tpl.php .

Dans cette page, les variables $node et $sid sont accessibles, on va les utiliser pour récupérer les données du formulaire:

<?php

include_once(drupal_get_path('module', 'webform') .'/includes/webform.submissions.inc');//ne pas oublier cette ligne.

//on utilise $node->nid (l'id du formulaire) et $sid (l'id de la soumission) pour récupérer les données.
$submission = webform_get_submission($node->nid, $sid);

//on boucle sur les différents champs du formulaire.
//(vous pouvez aussi faire un print_r($submission->data) pour identifier les différents champs que vous voulez récupérer.
foreach($submission->data as $data)
{
  echo $data['value'][0];
}

?>

5 réflexions au sujet de « Drupal – Comment récupérer les données d’un webform après soumission »

  1. Bonjour,

    Merci, pour cette astuce mais je voudrais pouvoir recuperer pour l’afficher l’id de la soumission mais pas l’id du formulaire.
    quelle page je peux modifier?
    j’ai testé token mais je ne trouve pas celui qu’il faut ?

    Merci,

    gaël

    • Gaël, je ne fais que reprendre le texte contenu dans l’astuce :
      //on utilise $node->nid (l’id du formulaire) et $sid (l’id de la soumission) pour récupérer les données.
      $submission = webform_get_submission($node->nid, $sid);

      Si tu regarde d’un peu plus près tu pourras y lire le commentaire : $sid (l’id de la soumission) pour récupérer les données. Je pense que cela répond grandement à ta question 😀

      Les gars, il serait bien de prendre le temps de regarder ce que l’auteur du code (qui s’est cassé la tête pour vous pondre une solution) vous affiche dans son code. En principe on comme par apprendre à marcher avant de vouloir courir … alors lisez avant de poster des questions !!!!!

  2. J’utilise des Webforms mais je n’arrive pas à trouver le moyen de générer des csv à chaque soumission correspondant au formulaire pour les envoyer dans le SI. Des pièces jointes sont également utilisées.
    Faire une fonction utilisant webform_results_export() est surement la solution ?

  3. Merci, c’est parfait. Pour ma part, ne voulant pas toucher au tpl du module, je l’ai fait sur un tpl d’une page vue de mon thème, puis une redirection en fin de formulaire en faisant passer en GET le $nid et $sid (tokens).
    Je n’ai pas eu besoin de la boucle foreach, j’ai tout visé avec $submission->data[‘value][0] .

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *