3

誰かが私が間違っていることについての洞察を私に与えることができますか?

32個のコンポーネントのWebフォームがあり、送信されたデータのXMLを作成しようとしています。フォームに記入して送信したのは1回だけです。

$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();

ご覧のとおり、入力された各Webフォームコンポーネントのform_keyを取得するために、2つのテーブル間の結合を実行しています。

問題は、32を超える結果が得られることです。どういうわけか、結果はひどく間違っています。

4

1 に答える 1

10

送信データを取得しようとしている場合は、webforms API を使用して、webform_get_submissions関数で特定の Web フォームのすべての送信を取得できます。その後、送信ごとにデータを解析して、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){
        ...
    }
}
于 2012-10-05T17:12:29.580 に答える