entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

google chart

Me gustaria que me dijeran como hacer una grafica con google chart con php y mysql! ya que e visto ejemplos y ninguno me ha ejecutado bien!

de antemano gracias!!

0voto

eldoni2 comentado

lo siento hermano, soy nuevo aqui

0voto

eldoni2 comentado

Segui este tutorial
http://www.codedrinks.com/google-api-chart-ejemplo-de-grafica-de-barras-con-php-jquery-y-mysql/
y al implementarlo no aparece la grafica, en un segun intento lo deje tal cual esta en el ejemplo y tampoco apareceio la grafica!! me podrian ayudar??

0voto

carlossevi comentado

La verdad es que el tutorial parece muy completo. ¿Puedes darnos un link público en el que revisar qué es lo que consigues al seguir el tutorial? No podemos saber dónde tienes el error sin ver nada =)

0voto

eldoni2 comentado

si hermano esta muy completo pero no me corre ami, ps no tengo uno publico amenos que te conectes remotamente, ademas ya lo cheque en consola y me sale esto
Uncaught SyntaxError: Unexpected token < index.html:13
(anonymous function)

datos = JSON.parse(datos);  en esta linea marca error

0voto

carlossevi comentado

La función JSON.parse recibe como entrada un string y lo convierte a un objeto JSON. El string en teoría lo estás recibiendo de la petición ajax.

El error indica que el objeto datos o bien no es un string o no tiene el formato correcto. ¿Puedes probar a hacer lo siguiente?:

console.log(datos);

A ver qué información hay en el objeto datos. Pruébalo y nos pegas el resultado.

0voto

eldoni2 comentado

ok bro me marca el array con los datos traido de la consulta,

Uncaught Error: Not an array format
jda format+es,default+es,ui+es,corechart+es.I.js:179
tp format+es,default+es,ui+es,corechart+es.I.js:181
dibujarGrafico //este es un metodo! eso
\
eso es lo qu3 me genero el codigo
Not an array format imagino que salio al ver auitado la otra linea vd!

0voto

carlossevi comentado

Perdona eldoni2 pero yo en el texto que has pegado no veo el string que debería generar el console.log(datos); ¿Lo has puesto justo antes de la línea que te da error?

El mensaje del error de la consola no debería variar respecto al que has pegado anteriormente pero ahora has pegado otro diferente.

0voto

eldoni2 comentado

eso te aparece si solo dejo
console.log(datos);
[["MES","Bano","Computadora","Televisores"],["ENERO"],["FEBRERO"]]

0voto

eldoni2 comentado

y esto tmb creo que si esta bn todo
[Array[4], Array[1], Array[1]]

0voto

carlossevi comentado

No encuentro el problema, lo he comprobado en http://json.parser.online.fr/ y la cadena siguiente parece correcta:

[["MES","Bano","Computadora","Televisores"],["ENERO"],["FEBRERO"]]

Si la variable datos tiene ese contenido antes de la línea

datos = JSON.parse(datos);

no entiendo por qué salta el error. A ver si alguien puede ayudarte, aunque creo que estoy merecería abrir una pregunta independiente o derivada.

0voto

eldoni2 comentado

Gracias hermano ya pude resolver!!

0voto

Peter comentado

Por favor publica la respuesta y márcala como correcta :)

Gracias.

2 Respuestas

2votos

carlossevi Puntos63580

Las gráficas de Google Chart no se programan con PHP ni MySQL sino con HTML y Javascript. En la documentación puedes encontrar un ejemplo simple.

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses'],
          ['2004',  1000,      400],
          ['2005',  1170,      460],
          ['2006',  660,       1120],
          ['2007',  1030,      540]
        ]);

        var options = {
          title: 'Company Performance',
          vAxis: {title: 'Year',  titleTextStyle: {color: 'red'}}
        };

        var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

Cuestión aparte es que para generar el HTML y el JS utilices la combinación de PHP y MySQL.

Debe tomártelo como 2 pasos:

  1. Conseguir con HTML y JS que se dibuje la gráfica que quieres.
  2. Si quieres que la gráfica cambie dinámicamente, el HTML y JS anteriores deben generarse con PHP (o equivalente), pero esto ya se trata de un problema independiente de Google Chart.

Para el punto 1 la documentación es tu mejor amiga.

0voto

eldoni2 comentado

lo se hermano y tmb se utiliza el json, si pero quiero realizar de forma dinamica implementando consultas con mysql!!

0voto

carlossevi comentado

En ese caso necesitas que los arrays de JS se carguen con información obtenida en formato JSON (aunque podría ser otro) como bien dices. Desde Javascript debes hacer una llamada AJAX a un URL de tu aplicación que devuelva tus datos en formato JSON en función de parámetros.

Un ejemplo de código PHP que devuelve datos en formato JSON:

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

0voto

eldoni2 comentado

imagino que devo sustituir la consulta de mysql vd?

0voto

Peter comentado

@eldoni2 Por favor publica tus comentarios como comentarios y no como respuestas :)

Saludos.

1voto

jdbenitez Puntos840

Te paso un ejemplo, a mi me funciona como está, claro que quitaré algunas cosas y serán comentadas.

<?php
//Archivos de inclusion
//Configuraciones
//Conexion a BBDD
//Funciones, etcétera

//Función para formato de fecha a 'YYYYMMAA HH:MM:SS'

$personas = obtenerPersonas();
?>
<!doctype html>
<html lang="es">
<head>
    <meta charset="UTF-8">

    <!-- Reset CSS -->
    <link rel="stylesheet" href="http://187.210.109.99/css/reset.css" />

    <!-- jQuery plugin -->
    <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.2.min.js"></script>

    <!-- plugin Gráficas Google -->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>

    <script type="text/javascript">
      google.load('visualization', '1', {packages: ['corechart']});
    </script>

    <!-- Local CSS -->
    <link rel="stylesheet" href="../css/consulta.css" />
    <link rel="stylesheet" href="../css/impresion.css" media="print" />

    <!-- Local script -->

    <title>
        Reporte semanal
    </title>
</head>
    <body>

        <header>
            <img src="../imagenes/logo.png" alt="Empresa" id="logo">
            <h1>
                Reporte
            </h1>
        </header>
        <nav>
        </nav>
        <section class="reporte">
            <form action="resultado.php" method="post" class="consulta">
                <legend>
                    Especifique las fechas
                </legend>
                <ul class="fechas">
                    <li>
                        <label for="semana">
                            Seleccione semana: 
                        </label>
                        <input type="week" name="semana" id="semana" value="<?php echo $semana;?>" />
                    </li>

                    <li>
                        <input type="submit" name="consultar" id="consultar" value="Consultar" />
                    </li>
                </ul>
                <p class="rango-fechas">
                    Reporte del <span class="fecha-inicial"></span> al <span class="fecha-final"></span>
                </p>
            </form>
<?php
    $dias = array('Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado');

    foreach ($personas as $valor) {

        $consulta['id'] = trim($valor['codigoPersona']);
        $agenda = array();
        $citas = array();
        $agenda = obtenerResultadoAgenda($consulta);
        $citas = obtenerCitasPersona($consulta, false);

        echo '
        <section class="persona">

        <!-- Tabula los datos en HTML -->

            <script type="text/javascript">
                function drawVisualization() {

                var data = google.visualization.arrayToDataTable([
                    [\'Día\', \'Atendidas\', \'Agendadas\', \'Asistidas\']';
    foreach ($musculo[$consulta['id']] as $key => $value) {
        echo '
                    ,[\''. $key .'\', '. $value['atendidas'].', '. $value['agendadas'] .', '. $value['asistidas'] .', ]';
    }
                  echo '
                ]);

                var options = {
                    title : \'Producción por persona\',
                    vAxis: {title: "Cantidad",
                        minValue: 0, count: 8
                    },
                    hAxis: {title: "Día", color: \'#333\', count: 8 },
                    seriesType: "bars",
                    series: {5: {type: "line"}},
                    colors: [\'#FF0000\', \'#00FF00\', \'#0000FF\'],
                    setColumnLabel : ["Atendido", "Agendada", "Asistida"]
                };

                var chart = new google.visualization.ComboChart(document.getElementById(\''. $consulta['id'] .'\'));
                chart.draw(data, options);
              }
              google.setOnLoadCallback(drawVisualization);
            </script>

            <div id="'. $consulta['id'] .'" style="width: 860px; height: 500px;"></div>
            ';
    }

 echo '
        </section>
        </section>

        <footer>
            <pre>';
echo '
            </pre>
        </footer>
    </body>
</html>
';
?>

0voto

eldoni2 comentado

ok gracias hermano dejame checar y comento como fue!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta