Drupal 7 webform提交到远程mysql数据库

时间:2012-03-05 03:24:52

标签: database drupal-7 drupal-webform

当用户在我的Drupal 7网站上填写网络表单时,在提交时,我需要将提交数据发送到另一个数据库。我在自定义模块中使用hook_webform_submission_insert,但我只能将sid和nid插入到表中。我也需要发送我的webform字段;比如first_name,last_name,email等。但是我提交时会出错。

<?php
function hook_webform_submission_insert($node, $submission) {
  // Insert a record into a 3rd-party module table when a submission is added.
  db_insert('mymodule_table')
    ->fields(array(
      'nid' => $node->nid,
      'sid' => $submission->sid,
      'foo' => 'foo_data',
    ))
    ->execute();
}
?>

我试过'first_name'=&gt; 'first_name',但它不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:2)

要获得所有提交的数据,您必须采用稍微不同的方式。首先添加一个额外的提交处理程序,使用表单alter:

调用模块中的自定义函数
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {

    if($form_id == "YOUR_WEBFORM_ID") {
        $form['#submit'][] = 'MYMODULE_additional_insert';
    }
}

然后从您的自定义函数中访问表单数据并进行相应处理。

function MYMODULE_additional_insert($form, &$form_state) {

  $data = $form['submitted'];

   // Insert a record into a 3rd-party module table when a submission is added.
   db_insert('mymodule_table')
     ->fields(array(
       'foo' => $data['FOO_FIELD']['#value'],
  ))
  ->execute();

}