JavaScript - Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 06/11/2019 14:02:32
Buenas tengo una duda de como puedo actualizar mi gráfica en tiempo real con datos que tengo en mi base de datos. ya tengo la gráfica con los valores que tengo en la base de datos. ahora necesito que se actualice cada cierto tiempo con los valores que van entrando en la base de datos. Gracias.









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
	/* Database connection settings */
	$host = 'localhost';
	$user = 'root';
	$pass = '';
	$db = 'prueba_grafica';
	$mysqli = new mysqli($host,$user,$pass,$db) or die($mysqli->error);
 
	$ram1 = '';
	$cpu1 = '';
	$file1 = '';
	$timehora = '';
 
	//query to get data from the table
	$sql = "SELECT * FROM recursos1 ORDER BY timehora desc LIMIT 12";
    $result = mysqli_query($mysqli, $sql);
 
	//loop through the returned data
	while ($row = mysqli_fetch_array($result)) {
 
		$ram1 = $ram1 . '"'. $row['ram1'].'",';
		$cpu1 = $cpu1 . '"'. $row['cpu1'] .'",';
		$file1 = $file1 . '"'. $row['file1'] .'",';
		$timehora = $timehora . '"'. $row['timehora'] .'",';
	}
 
	$ram1 = trim($ram1,",");
	$cpu1 = trim($cpu1,",");
	$file1 = trim($file1,",");
	$timehora = trim($timehora,",");
?>
 
 
 
 
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Grafica lineal</title>
 
 
 
  <style>
    #chart {
      max-width: 1000px;
      margin: 35px auto;
    }
  </style>
</head>
 
<body>
 
 
  <div id="chart">
 
 
  <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
 
  <script>
        var options = {
            chart: {
                height: 600,
                type: 'line',
                zoom: {
                    enabled: false
                },
                animations: {
                    enabled: true,
                    easing: 'linear',
                    dynamicAnimation: {
                        speed: 10000
                    }
            }
            },
            series: [{
                name: "Ram",
                data: [<?php echo $ram1; ?>]
            }],
            dataLabels: {
                enabled: false
            },
            stroke: {
                curve: 'straight'
            },
            title: {
                text: 'Grafica de uso de memoria RAM',
                align: 'left'
            },
            grid: {
                row: {
                    colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns
                    opacity: 0.5
                },
            },
            xaxis: {
                categories: [<?php echo $timehora; ?>],
            },
 
        }
        var chart = new ApexCharts(
            document.querySelector("#chart"),
            options
        );
        chart.render();
  </script>
 
</div>
 
</body>
 
</html>
grafica
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 06/11/2019 16:06:28
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Para hacerlo en tiempo real necesitas un websocket, triggers, etc. mucho que explicar para un post.
Para hacerlo cada cierto tiempo es sencillo usas setInterval() y AJAX.

Por ejemplo con jQuery
1
2
3
4
5
6
7
8
9
10
11
12
13
14
setInterval(function(){
   $.ajax({
      url:'generaDatos.php',
      cache:false,
      dataType: 'json',
      success:function(options){
         chart = new ApexCharts(
            document.querySelector("#chart"),
            options
        );
         chart.render();
      }
   });
}, 5000)

generaDatos.php deberá crear el jSon options
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
	/* Database connection settings */
	$host = 'localhost';
	$user = 'root';
	$pass = '';
	$db = 'prueba_grafica';
	$mysqli = new mysqli($host,$user,$pass,$db) or die($mysqli->error);
 
	$ram1 = '';
	$cpu1 = '';
	$file1 = '';
	$timehora = '';
 
	//query to get data from the table
	$sql = "SELECT * FROM recursos1 ORDER BY timehora desc LIMIT 12";
	$result = mysqli_query($mysqli, $sql);
 
	//loop through the returned data
	while ($row = mysqli_fetch_array($result)) {
 
		$ram1 = $ram1 . '"'. $row['ram1'].'",';
		$cpu1 = $cpu1 . '"'. $row['cpu1'] .'",';
		$file1 = $file1 . '"'. $row['file1'] .'",';
		$timehora = $timehora . '"'. $row['timehora'] .'",';
	}
 
	$ram1 = trim($ram1,",");
	$cpu1 = trim($cpu1,",");
	$file1 = trim($file1,",");
	$timehora = trim($timehora,",");
 
$jSon = "
{
	chart: {
		height: 600,
		type: 'line',
		zoom: {
			enabled: false
		},
		animations: {
			enabled: true,
			easing: 'linear',
			dynamicAnimation: {
				speed: 10000
			}
		}
	},
	series: [{
		name: 'Ram',
		data: [$ram1]
	}],
	dataLabels: {
		enabled: false
	},
	stroke: {
		curve: 'straight'
	},
	title: {
		text: 'Grafica de uso de memoria RAM',
		align: 'left'
	},
	grid: {
		row: {
			colors: ['#f3f3f3', 'transparent'],
			opacity: 0.5
		},
	},
	xaxis: {
		categories: [$timehora],
	}
}";
echo json_decode($jSon);
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 08/11/2019 13:59:06
gracias por responder la verdad.Con el codigo que me pasastes no me aparece la grafica me puedes explicar un poco mejor como colocar el codigo? los coloco en 2 archivos diferentes o los 2 codigos van en uno solo? tendria que llamar alguna libreria extra ? disculpa la molestia!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 08/11/2019 15:41:30
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Son archivos separados, y si necesitas jQuery.
El primer código reemplaza tu <script> ya sea que lo uses en un archivo JS o dentro del mismo HTML.
El segundo código genera los datos de la grafica.

El primero solicita los datos al segundo, el segundo regresa los datos al primero y el primero genera la grafica con los datos recibidos.
Esto se repite cada cierto tiempo un numero indeterminado de veces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 12/11/2019 13:54:22
no me aparece la grafica cuando abro el codigo disculpa la molestia si puedes me dices que estoy haciendo mal porfavor.


index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Grafica lineal</title>
  <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
 
 
  <style>
    #chart {
      max-width: 1000px;
      margin: 35px auto;
    }
  </style>
</head>
 
<body>
 
 
  <div id="chart"></div>
 
 
  <script>
                setInterval(function(){
                $.ajax({
                    url:'generaDatos.php',
                    cache:false,
                    dataType: 'json',
                    success:function(options){
                        chart = new ApexCharts(
                            document.querySelector("#chart"),
                            options
                        );
                        chart.render();
                    }
                });
                }, 5000)
  </script>
 
</div>
 
</body>
 
</html>


generaDatos.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
	/* Database connection settings */
	$host = 'localhost';
	$user = 'root';
	$pass = '';
	$db = 'prueba_grafica';
	$mysqli = new mysqli($host,$user,$pass,$db) or die($mysqli->error);
 
	$ram1 = '';
	$cpu1 = '';
	$file1 = '';
	$timehora = '';
 
	//query to get data from the table
	$sql = "SELECT * FROM recursos1 ORDER BY timehora desc LIMIT 12";
	$result = mysqli_query($mysqli, $sql);
 
	//loop through the returned data
	while ($row = mysqli_fetch_array($result)) {
 
		$ram1 = $ram1 . '"'. $row['ram1'].'",';
		$cpu1 = $cpu1 . '"'. $row['cpu1'] .'",';
		$file1 = $file1 . '"'. $row['file1'] .'",';
		$timehora = $timehora . '"'. $row['timehora'] .'",';
	}
 
	$ram1 = trim($ram1,",");
	$cpu1 = trim($cpu1,",");
	$file1 = trim($file1,",");
	$timehora = trim($timehora,",");
 
$jSon = "
{
	chart: {
		height: 600,
		type: 'line',
		zoom: {
			enabled: false
		},
		animations: {
			enabled: true,
			easing: 'linear',
			dynamicAnimation: {
				speed: 10000
			}
		}
	},
	series: [{
		name: 'Ram',
		data: [$ram1]
	}],
	dataLabels: {
		enabled: false
	},
	stroke: {
		curve: 'straight'
	},
	title: {
		text: 'Grafica de uso de memoria RAM',
		align: 'left'
	},
	grid: {
		row: {
			colors: ['#f3f3f3', 'transparent'],
			opacity: 0.5
		},
	},
	xaxis: {
		categories: [$timehora],
	}
}";
echo json_decode($jSon);
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 12/11/2019 15:37:10
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Por favor verifica en el inspector si la consola te muestra algún error y que es lo que te esta respondiendo el servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 12/11/2019 16:20:40
se me olvido decirte eso no me aparece ningun error en la consola
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 12/11/2019 17:30:59
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
¿y la respuesta del servidor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 12/11/2019 19:29:05
umm disculpa mi ignorancia donde puedo ver la respuesta del servidor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 12/11/2019 20:51:10
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
En el inspector en la ficha "Red" o "Network"
Veras un listado de todas las peticiones que hagas ahí deberá estar generaDatos.php
La seleccionas y luego elige "Respuesta" o "Cuerpo". ahí ves que devolvió el servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 12/11/2019 21:03:39
esto Es lo que me aparece

imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 12/11/2019 22:07:41
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Bien, toca hacer pruebas con generaDatos.php
lo bueno es que puedes ejecutarlo directo hasta conseguir lo deseado, la estructura del jSon.
1
echo $jSon;

Si se ve correcto, creo que me equivoque con el
1
echo json_decode($jSon);

y seria
1
echo json_encode($jSon);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 13/11/2019 13:20:28
ahora me aparece este error en la respuesta del servidor


"\r\n{\r\n\tchart: {\r\n\t\theight: 600,\r\n\t\ttype: 'line',\r\n\t\tzoom: {\r\n\t\t\tenabled: false\r\n\t\t},\r\n\t\tanimations: {\r\n\t\t\tenabled: true,\r\n\t\t\teasing: 'linear',\r\n\t\t\tdynamicAnimation: {\r\n\t\t\t\tspeed: 10000\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tseries: [{\r\n\t\tname: 'Ram',\r\n\t\tdata: [\"80\",\"80\",\"80\",\"80\",\"80\",\"80\",\"80\",\"80\",\"11\",\"37\",\"96\",\"61\"]\r\n\t}],\r\n\tdataLabels: {\r\n\t\tenabled: false\r\n\t},\r\n\tstroke: {\r\n\t\tcurve: 'straight'\r\n\t},\r\n\ttitle: {\r\n\t\ttext: 'Grafica de uso de memoria RAM',\r\n\t\talign: 'left'\r\n\t},\r\n\tgrid: {\r\n\t\trow: {\r\n\t\t\tcolors: ['#f3f3f3', 'transparent'],\r\n\t\t\topacity: 0.5\r\n\t\t},\r\n\t},\r\n\txaxis: {\r\n\t\tcategories: [\"16:38:28\",\"16:38:28\",\"16:06:05\",\"16:06:02\",\"15:42:17\",\"15:24:48\",\"14:58:02\",\"14:19:08\",\"14:05:46\",\"14:05:46\",\"14:05:09\",\"13:56:21\"],\r\n\t}\r\n}"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Jonathan (9 intervenciones) el 13/11/2019 14:01:25
esto me esta saliendo en la consola tambien :/


imgconsola
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Actualizar grafica en tiempo real utilizando valores guardados en mi base de datos

Publicado por Alejandro (532 intervenciones) el 13/11/2019 15:47:30
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Solo tienes que construir bien el jSon, si estaba en lo correcto, es json_decode()

Como te dije prueba a construir bien el json, antes de pasarlo por json_decode()
otra forma es que lo envíes como texto y en js al recibirlo lo pases por JSON.parse()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar