Afficher les données de résultats du formulaire Web dans un graphique Google

11

J'essaie d'afficher les résultats du formulaire Web sous forme de graphiques Google . Je fais cela sur la couche de thème en remplaçant theme_webform_results_analysis () sur le fichier template.php de mon thème et en utilisant le module Chart . Drupal 6.22, Webform 6.x-3.11.

La page d'analyse du formulaire Web affiche normalement les données dans une table, donc j'essaie de pirater les tableaux pour que cette table passe des choses dans l' API Chart .

EDIT : J'ai compris comment utiliser var_dump et j'ai trouvé que la meilleure approche pourrait être de se lever séparément dans les tableaux $ row_data et $ questions (au lieu d'utiliser le tableau $ lines que j'avais dans la première version de cette question, qui était un mashup des deux tableaux).

EDIT # 2 : Je pense avoir découvert comment récupérer chaque morceau des tableaux $ questions et $ row_data originaux (voir ci-dessous - le foreach dans l'autre foreach). Alors maintenant, je dois mettre ces morceaux dans des tableaux appropriés (1 par question) et trouver un moyen de parcourir tous ces éléments.

Voici ce que j'ai dans 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;
}
Sarah German
la source
1
avez-vous résolu votre propre question. Si c'est le cas, publiez votre propre réponse
iStryker
Non, je ne l'ai pas encore compris. Il est en attente pour l'instant jusqu'à ce que je termine la lecture de "Commencer PHP et MySQL5: du novice au professionnel" ( lien ), puis je vais lui donner un autre coup. Je me suis efforcé d'obtenir de l'aide en ligne, alors j'ai pensé que je devais simplement mieux maîtriser les principes fondamentaux avant d'essayer quelque chose d'aussi délicat.
Sarah German

Réponses:

2

Il existe un autre module de graphiques Drupal qui prend en charge les formulaires Web: http://drupal.org/project/fusioncharts

Fusionchart a un petit sous-module appelé fusioncharts_webform

ipwa
la source
Merci pour votre réponse! J'ai regardé FusionCharts, mais ce n'est pas un bon choix pour mon projet car il utilise Flash et nous aurions besoin de la version payante - nous essayons de nous en tenir aux solutions open-source. Mais ça a l'air bien, je parie que ça résout ce problème pour beaucoup de gens.
Sarah German
1

Plus de 3 ans plus tard maintenant, je sais, mais les choses ont un peu évolué depuis lors ...

En ne considérant que le titre de cette question, on pourrait vouloir résoudre ce problème via le module Graphiques ces jours-ci (bien que la question d'origine soit partie de Chart , qui est un autre module). Et cela en combinaison avec un graphique Webform ou des graphiques Webform .

En fonction de vos besoins actuels, il apparaît qu'avec ces 2 modules liés à Webform, beaucoup peut être réalisé par les activités de construction de sites (probablement plus besoin de compétences pour les développeurs Drupal). Reportez-vous à la puce 5 dans Modules facilitant la création de graphiques via le module Graphiques pour plus de détails sur ces modules Webform Chart (et un lien vers une discussion intéressante).

Utilisez la comparaison des modules de cartographie pour d'autres alternatives potentielles de nos jours (et soyez prêt à vraiment vous embrouiller au sujet des dizaines de modules de cartographie disponibles ...).

Attention: je suis un (co-) mainteneur de Chart and Charts et l'auteur des modules Comparison of Charting . J'essaie de continuer les contributions (étonnantes) de Quicksketch à Charts, qui est également le mainteneur de Webform et de Webform ChartS (avec un 's').

PS: Désolé pour tous ces espaces de noms déroutants *, je ne les ai pas inventés ...

Pierre.Vriens
la source