Mostrar datos de resultados de formularios web en un gráfico de Google


11

Estoy tratando de mostrar los resultados del formulario web como gráficos de Google . Estoy haciendo esto en la capa de tema anulando theme_webform_results_analysis () en el archivo template.php de mi tema y usando el módulo Gráfico . Drupal 6.22, formulario web 6.x-3.11.

La página de análisis de formularios web normalmente muestra los datos en una tabla, por lo que estoy tratando de separar las matrices para que esa tabla pase cosas a la API de gráficos .

EDITAR : descubrí cómo usar var_dump y descubrí que el mejor enfoque podría ser levantarme en las matrices $ row_data y $ preguntas por separado (en lugar de usar la matriz $ filas que tenía en la primera versión de esta pregunta, que era un mashup de ambas matrices).

EDITAR # 2 : Creo que he descubierto cómo agarrar cada pieza de las $ preguntas originales y las matrices de $ row_data (ver más abajo - el foreach en el otro foreach). Así que ahora necesito colocar esas piezas en matrices adecuadas (1 por pregunta) y encontrar una manera de iterar a través de todas ellas.

Esto es lo que tengo en 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
resolviste tu propia pregunta? Si es así, publique su propia respuesta
iStryker

No, aún no he descubierto esto. Está en espera por ahora hasta que termine de leer "Principio PHP y MySQL5: de principiante a profesional" ( enlace ), y luego voy a darle otra oportunidad. Me puse a buscar ayuda en línea, así que pensé que solo necesitaba entender mejor los fundamentos antes de intentar algo tan complicado.
Sarah German

Respuestas:


2

Hay otro módulo de gráficos Drupal que proporciona soporte para formularios web: http://drupal.org/project/fusioncharts

Fusionchart tiene un pequeño submódulo llamado fusioncharts_webform


¡Gracias por su respuesta! Miré a FusionCharts, pero no es una buena opción para mi proyecto, ya que usa Flash y necesitaríamos la versión paga; tratamos de mantener las soluciones de código abierto. Pero se ve bien, apuesto a que eso resuelve este problema para mucha gente.
Sarah German

1

Más de 3 años después, lo sé, pero las cosas han evolucionado un poco desde entonces ...

Al considerar solo el título de esta pregunta, es posible que desee abordar esto a través del módulo Gráficos en estos días (aunque la pregunta original comenzó desde el Gráfico , que es otro módulo). Y esto en combinación con Webform Chart o Webform Charts .

Dependiendo de cuáles sean sus necesidades actuales en la actualidad, parece que con estos 2 módulos relacionados con el formulario web, se pueden lograr bastantes actividades de creación de sitios (probablemente ya no se necesiten las habilidades de los desarrolladores de Drupal). Consulte la viñeta 5 en Módulos que facilitan la creación de gráficos a través del módulo Gráficos para obtener más detalles sobre estos módulos de Gráficos de formularios web (y enlace a una discusión interesante).

Utilice la Comparación de módulos de gráficos para otras posibles alternativas en estos días (y prepárese para confundirse realmente sobre las docenas de módulos de gráficos disponibles ...).

Tenga en cuenta: soy un nuevo (co) mantenedor de Gráficos y Gráficos , y el autor de la Comparación de módulos de gráficos . Estoy tratando de continuar las contribuciones (increíbles) de Quicksketch a Charts, que también es el mantenedor de Webform, y Webform ChartS (con una 's').

PD: Perdón por todos esos espacios de nombres de gráficos * confusos, no los inventé ...

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.