在Google图表中显示网络表单结果数据


11

我正在尝试将Webform结果显示为Google Charts。我通过在主题的template.php文件上覆盖theme_webform_results_analysis()并使用Chart模块在主题层上进行此操作。Drupal 6.22,Webform 6.x-3.11。

Webform分析页面通常在表中显示数据,因此我试图拆分该表的数组,以将内容传递到Chart API中

编辑:我想出了如何使用var_dump,发现更好的方法可能是分别进入$ row_data和$ questions数组(而不是使用我在此问题的第一个版本中获得的$ rows数组,两个数组的混搭)。

编辑#2:我想我已经找到了如何获取原始$ questions和$ row_data数组的每一部分的方法(请参见下文-其他foreach中的foreach)。所以现在我需要将这些片段放入适当的数组中(每个问题1个),并找到一种遍历所有这些片段的方法。

这是我在template.php中得到的:

/**
 * Output the content of the Analysis page.
 * @see webform_results_analysis()
 */
function mytheme_webform_results_analysis($node, $data, $sids = array(), $analysis_component = NULL) {

  foreach ($data as $cid => $row_data) {

    if (is_array($row_data)) {

      // get the questions, put them in an array
      $questions = array();
      $questions[] = array('data' => check_plain($node->webform['components'][$cid]['name']));

      // this will print everything out in the right order - it really needs to
      // make an array for each question that looks like $test_chart below
      foreach ($questions as $question) {
        print $question['data'] . '<br />'; // questions 
        foreach ($row_data as $key => $value) {
          print $value[0] . '<br />'; // labels
          print $value[1] . '<br />'; // results 
        }
      }

      // Set up the chart
      $chart = array(
        '#chart_id' => 'webform_analysis',
        '#type' => CHART_TYPE_PIE_3D,
        '#size' => chart_size(658, 250)
      );

      // not real data here, this just shows the format I'm shooting for
      $test_chart = array(
        'option 1' => '12',
        'option 2' => '45',
        'option 3' => '122'
      ); 

      // separate the above array into labels and values, add a percentage to the label
      foreach ($test_chart as $key => $value) {
        $chart['#data'][] = $test_chart[$key];
        $chart['#labels'][] = strip_tags($key) . ' (' . round($test_chart[$key], 2) .  '%)';
      }
      // pick some colors
      $chart['#data_colors'][] = 'b0c73d';
      $chart['#data_colors'][] = '667323';
      $chart['#data_colors'][] = '221f1f';

      $output = chart_render($chart);    
    }
  }

  if (count($row_data) == 0) {
    $output = t('There are no submissions for this form.');
  }

  // return the data that goes into chart function, just for testing
  // return $chart_data; 

  // someday, this might return a set of webform charts. right now it returns the fake test chart
  // return $output;
}

1
您是否解决了自己的问题。如果是这样,请发布您自己的答案
iStryker,2011年

不,我还没有弄清楚。它暂时处于暂停状态,直到我读完“从PHP和MySQL5开始:从新手到专业人士”(链接),然后再进行其他介绍。我大胆地寻求在线帮助,所以我认为在尝试这一棘手的事情之前,我只需要更好地掌握基础知识即可。
莎拉·

Answers:


2

还有另一个Drupal图表模块提供对Web窗体的支持:http : //drupal.org/project/fusioncharts

Fusionchart有一个名为fusioncharts_webform的小子模块


感谢您的答复!我查看了FusionCharts,但是它不适合我的项目,因为它使用Flash,而且我们需要付费版本-我们尝试坚持开源解决方案。但这看起来不错,我敢打赌,这可以解决很多人的问题。
莎拉·

1

我知道三年多以后了,但是从那以后事情发展了一点……

通过仅考虑此问题的标题,这些天人们可能希望通过“ 图表”模块解决此问题(尽管最初的问题是从“ 图表”(另一个模块)开始的)。并与Webform ChartWebform Charts结合使用。

根据您今天的实际需求,似乎可以使用这2个与Webform相关的模块,通过网站构建活动来实现很多事情(可能不再需要Drupal开发人员技能)。有关这些Webform 图表模块的更多详细信息,请参阅“ 通过图表模块促进图表绘制的模块”中的项目5 (并链接到有趣的讨论)。

最近,将比较图表模块用于其他可能的替代方法(并准备对数十个可用的图表模块感到困惑...)。

请注意:我是Chart and Charts的新(共同)维护者,并且是Charting Modules比较的作者。我试图继续Quicksketch对Charts的(惊人的)贡献,Charts也是Webform和Webform ChartS(带有“ s”)的维护者。

PS:对所有那些令人困惑的* chart(s)名称空间表示抱歉,我没有发明它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.