3

I have a webform of 32 components and I am trying to create XML of the submitted data. The form has been filled and submitted just once.

$query  =   db_select('webform_submitted_data', 'wsd');
$query->join('webform_component', 'wc', 'wsd.cid = wc.cid');

$query->fields('wsd', array('nid', 'cid', 'data', 'sid'));
$query->fields('wc', array('form_key', 'name'));

$results    =   $query->execute()->fetchAll();

As you can see, I am performing a join between 2 tables in order to get the form_key for each filled webform component.

The problem is I get a lot more that 32 results - somehow the result is going badly wrong.

halfer
  • 19,824
  • 17
  • 99
  • 186
sisko
  • 9,604
  • 20
  • 67
  • 139

1 Answers1

10

If you are trying to get the submission data, you can use the webforms api to retrieve all submissions for a particular webform with the webform_get_submissions function. Then you can parse through the data for each submission to build your XML.

module_load_include('inc','webform','includes/webform.submissions');
$submissions = webform_get_submissions(array('nid'=>$webform_nid));

foreach ($submissions as $submission){
    foreach ($submission->data as $row=>$data){
        ...
    }
}
mmiles
  • 961
  • 6
  • 9
  • 3
    Thanks Mike. I just updated your code slightly by adding the 'includes' directory before webform.submissions – sisko Oct 08 '12 at 09:25