Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Json y librería highcharts

Estas en el tema de Json y librería highcharts en el foro de Javascript en Foros del Web. He buscado por el foro (y por google), pero no encuentro la solución, y si la he leído, no la he entendido. No soy capaz ...
  #1 (permalink)  
Antiguo 19/11/2013, 15:16
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Json y librería highcharts

He buscado por el foro (y por google), pero no encuentro la solución, y si la he leído, no la he entendido.

No soy capaz de dibujar ninguna gráfica. Si yo le inserto los datos manualmente sí, pero si intento que los lea a través del json, no.

He creado un formulario que me manda los datos a una base de datos MYSQL. Bien. Luego, convierto esos datos a json con un json_encode.

Os dejo el Php:

Código:
<?php
$con = mysql_connect("url", "user", "password");

if (!$con) {
die('Could not connect: ' . mysql_error());
}

mysql_select_db("nombre_base_datos", $con);

$result = mysql_query("SELECT Mes, Compras FROM nombre_de_la_tabla");

$rows = array();
while($r = mysql_fetch_array($result)) {
$row['Mes'] = $r[0];
$row['Compras'] = $r[1];
array_push($rows,$row);
}

print json_encode($rows, JSON_NUMERIC_CHECK);

mysql_close($con);
?>
Que me devuelve en este formato:
[["Enero",3],["Febrero",8]]

A continuación intento dibujar la gráfica con el json que me proporciona este php.

Os dejo el código:

Código:
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Highcharts Pie Chart</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        var options = {
            chart: {
                renderTo: 'container',
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Web Sales & Marketing Efforts'
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                }
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',
                        formatter: function() {
                            return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                        }
                    }
                }
            },
            series: [{
                type: 'pie',
                name: 'Browser share',
                data: []
            }]
        }

        $.getJSON("nombre_archivo.php", function(json) {
            options.series[0].data = json;
            chart = new Highcharts.Chart(options);
        });



    });   
    </script>
    <script src="http://code.highcharts.com/highcharts.js"></script>
    <script src="http://code.highcharts.com/modules/exporting.js"></script>
</head>
<body>
    <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
</body>
Creo que el problema está o en el formato del json o cuando llamo al json. El ejemplo que sigo es de esta web: http://blueflame-software.com/blog/highcharts-pie-chart-php-mysql-example/

Me da igual el tipo de gráfica, ya sea una "pie chart" o una gráfica de barras.

Mi intención es crear una encuesta y mostrar los resultados al momento. Si conocéis otra manera de hacerlo, o ayudarme/guiarme os lo agradecería también. Ando un poco desesperado ya. Cualquier mínima ayuda sería de gran utilidad.

Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 19/11/2013, 15:34
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Json y librería highcharts

Tu PHP no devuelve la cadena que dices. Haz que la devuelva.
Te habrías dado cuenta si hicieras un console.log de el parámetro json dentro de tu getJSON. ¿Cómo depuras tus códigos?
  #3 (permalink)  
Antiguo 19/11/2013, 15:46
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

Buenas, gracias por tu comentario. Acabo de ejecutar de nuevo el código y la verdad es que me devuelve la cadena que he puesto arriba.

También he comprobado si el json es válido o no en esta web: http://jsonlint.com/
Y me aparece como json válido.
  #4 (permalink)  
Antiguo 19/11/2013, 15:52
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Json y librería highcharts

¿Eh?
Según tu código, tu php devuelve algo así como:
[{ "Mes": "Enero", Compras: 3}, { "Mes": "Febrero", "Compras": 8}]

¿Puedes poner la url de tu php que llamas por ajax?
  #5 (permalink)  
Antiguo 19/11/2013, 15:59
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

Te la mando por privado. Gracias.
  #6 (permalink)  
Antiguo 19/11/2013, 16:15
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

He cometido un fallo al transcribir el código aquí. En el servidor lo tengo subido correctamente. Tal y como muestro aquí. De ahí nuestro malentendido. Perdón.

El php del Json es así:

Código:
<?php
$con = mysql_connect("url", "user", "password");

if (!$con) {
die('Could not connect: ' . mysql_error());
}

mysql_select_db("nombre_base_datos", $con);

$result = mysql_query("SELECT Mes, Compras FROM nombre_de_la_tabla");


//Aquí es donde antes he puesto el error $row['Mes']=$r[0]
$rows = array();
while($r = mysql_fetch_array($result)) {
    $row[0] = $r[0];
    $row[1] = $r[1];
    array_push($rows,$row);
}


print json_encode($rows, JSON_NUMERIC_CHECK);

mysql_close($con);
?>
  #7 (permalink)  
Antiguo 19/11/2013, 16:27
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Json y librería highcharts

¿Entonces ahora funciona?
  #8 (permalink)  
Antiguo 19/11/2013, 16:31
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

No no. Nunca ha funcionado, el fallo mío ha sido al poner aquí el código, que lo he copiado de donde no debía, en vez de copiar directamente el que tengo subido al servidor.
  #9 (permalink)  
Antiguo 19/11/2013, 16:42
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Json y librería highcharts

Si estás usando un sitio gratuíto para alojar tu página, que sepas que probablemente tu servidor meta mierda en todas las respuestas HTML que te mande. Por ejemplo, la respuesta AJAX estará llena de mierda.
  #10 (permalink)  
Antiguo 19/11/2013, 16:43
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

Cita:
Iniciado por marlanga Ver Mensaje
Si estás usando un sitio gratuíto para alojar tu página, que sepas que probablemente tu servidor meta mierda en todas las respuestas HTML que te mande. Por ejemplo, la respuesta AJAX estará llena de mierda.
Voy a probar en localhost y te digo. Gracias.
  #11 (permalink)  
Antiguo 19/11/2013, 17:22
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

Por ahora el mismo php, me devuelve

[{"Nombre":"Enero","Compras":5},{"Nombre":"Febrero" ,"Compras":2}]

Tal y como tú decías que ese código tenía que devolver... Vaya tela como sea este el fallo... Pruebo la gráfica y te digo.
  #12 (permalink)  
Antiguo 19/11/2013, 17:30
 
Fecha de Ingreso: noviembre-2013
Mensajes: 8
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Json y librería highcharts

La gráfica aparece... Llevo una semana dándole vueltas, todo el día con el código, y resulta ser que es culpa del servidor...

Muchísimas gracias marlanga. Eres muy bueno en esto. De verdad, no sabes cuanto te lo agradezco.
¿Alguna recomendación de servidor gratuito? Es que es una web para un trabajo de facultad y no voy a comprar un dominio para ello...
  #13 (permalink)  
Antiguo 19/11/2013, 17:40
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Json y librería highcharts

Hace mucho tiempo usaba webhost, y creo recordar que no metía nada. Ahora no tengo ni idea cuales son las gratuítas que no te meten nada.
http://www.000webhost.com/
  #14 (permalink)  
Antiguo 07/01/2014, 13:21
 
Fecha de Ingreso: enero-2014
Mensajes: 1
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Json y librería highcharts

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/u703948259/public_html/graf/data.php on line 13 []

yo tengo error y no se que hacer

Etiquetas: ajax, formulario, html, jquery, js, json, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:39.