Gráficas Con CanvasJS (HTML + Javascript + MySQL + PHP) - Panama Hitek
Gráficas Con CanvasJS (HTML + Javascript + MySQL + PHP) - Panama Hitek
El objetivo de este post es documentar los métodos que permiten montar una página web
en la cual podamos visualizar una grá ca interactiva a partir de los datos almacenados en
una base de datos. Debo admitir que mis habilidades en la programación web son
limitadas, razón por la cual escribo este post ya que recientemente he montado un
proyecto que integra HTML, JavaScript (Jquery, CanvasJS), MySQL y PHP. La grá ca
resultante luce así:
http://panamahitek.com/graficas-con-canvasjs/ 1/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
CanvasJS. Con esta herramienta es muy sencillo construir un grá co como el que se
muestra en la gura anterior. Debo reiterar que mis habilidades en el uso de HTML, PHP y
Javascript son básicas y puede que la forma como he construido los códigos no sea la
mejor.
Consideraciones Previas
Antes de entrar en la programación, necesitaremos crear un servidor de prueba en
nuestra computadora. PHP es un lenguaje del lado del servidor, por lo cual debe
ejecutarse en un servidor para que podamos ver los resultados de lo que vamos
programando. Esto lo podemos lograr instalando XAMPP (yo utilizo Windows). La ventaja
de utilizar XAMPP es que nos permitirá, además de usar PHP, iniciar el servidor MySQL en
el cual crearemos la base de datos.
Cuando instalemos XAMPP, debemos abrir el XAMPP Control Panel e iniciar el Apache y
MySQL Server.
http://panamahitek.com/graficas-con-canvasjs/ 2/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
Con esto hemos habilitado el MySQL Server, el cual nos permitirá crear y manipular bases
de datos MySQL de forma local. El Apache Server es el que nos permitirá ejecutar scripts
en PHP.
El IDE que yo utilizo para casi cualquier tipo de programación es Netbeans. Usted puede
utilizar el IDE de su preferencia. En el Netbeans IDE creamos un proyecto PHP.
http://panamahitek.com/graficas-con-canvasjs/ 3/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
http://panamahitek.com/graficas-con-canvasjs/ 4/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
http://panamahitek.com/graficas-con-canvasjs/ 5/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
Aquí seleccionamos Local Web Site, con lo cual le indicamos a Netbeans que usaremos el
servidor local. La URL será http://localhost/panamahitek/.
1 <html>
2 <head>
3 <title></title>
4 </head>
5 <body>
6 <?php
7 echo("hola");
http://panamahitek.com/graficas-con-canvasjs/ 6/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
8 ?>
9 </body>
10 </html>
Ahora, como último paso antes de pasar a la programación, crearemos una carpeta dentro
de la ruta de nuestro proyecto que llamaremos assets. En assets creamos una carpeta
que llamaremos script. En esta carpeta necesitamos colocar los cheros de JavaScript que
necesitaremos para que nuestro proyecto funcione. Estos son:
CanvasJS API
Jquery
http://panamahitek.com/graficas-con-canvasjs/ 7/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
Guardamos la tabla y ahora insertamos algunos valores para lo que será una grá ca
sencilla. Yo he insertado los siguientes valores:
http://panamahitek.com/graficas-con-canvasjs/ 8/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
Un lenguaje del lado del servidor es aquel que se guarda en el servidor y al cual el usuario
no tiene acceso. Los lenguajes del lado del cliente, como HTML, son descargados al
navegador cada vez que entramos a una página web.
Si le damos clic derecho a una página web, utilizando un navegador como Chrome o
Firefox, veremos la opción inspeccionar. Con esto veremos el código que forma la página
del lado del cliente. Los cheros que contienen los scripts de manejo de base de datos u
otras tareas se encuentran del lado del servidor, a los cuales no tendremos acceso.
El primer script que necesitamos construir en PHP es aquel que extraiga la información de
la base de datos y la almacene dentro de un JSON. El código es el siguiente:
1 <?php
2 header('Content-Type: application/json');
3 $con = mysqli_connect("localhost", "root", "", "panamahitek");
4
5 if (mysqli_connect_errno($con)) {
6 echo "Failed to connect to DataBase: " . mysqli_connect_error();
7 } else {
8 $data_points = array();
9 $result = mysqli_query($con, "SELECT * FROM plot_values");
10 while ($row = mysqli_fetch_array($result)) {
11 $point = array("valorx" => $row['x'], "valory" => $row['y']);
12 array_push($data_points, $point);
13 }
14 echo json_encode($data_points);
15 }
16 mysqli_close($con);
17 ?>
http://panamahitek.com/graficas-con-canvasjs/ 9/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
Si queremos probar si nuestro código está funcionando correctamente, podemos darle clic
derecho en el chero PHP en el cual hemos colocado este código. En mi caso, mi chero se
llama data.php.
http://panamahitek.com/graficas-con-canvasjs/ 10/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
Programación en HTML
La programación en HTML es la que permitirá mostrar a los usuarios una interfaz grá ca.
Es, también, donde montaremos los scripts en JavaScript.
1 <html>
2 <head>
3 <script type="text/javascript">
4 window.onload = function () {
5 var dataLength = 0;
6 var data = [];
7 $.getJSON("data.php", function (result) {
8 dataLength = result.length;
9 for (var i = 0; i < dataLength; i++) {
10 data.push({
11 x: parseInt(result[i].valorx),
12 y: parseInt(result[i].valory)
13 });
14 }
15 ;
16 chart.render();
17 });
18 var chart = new CanvasJS.Chart("chart", {
19 title: {
20 text: "Valores X vs. Valores Y"
21 },
22 axisX: {
23 title: "Valores X",
24 },
25 axisY: {
26 title: "Valores Y",
27 },
28 data: [{type: "line", dataPoints: data}],
29 });
30 }
31 </script>
32 <script type="text/javascript" src="assets/script/canvasjs.min.
33 <script type="text/javascript" src="assets/script/jquery-2.2.3.m
34 </head>
35 <body>
36 <div id="chart">
37 </div>
http://panamahitek.com/graficas-con-canvasjs/ 11/12
12/11/2017 Gráficas con CanvasJS (HTML + Javascript + MySQL + PHP) | Panama Hitek
38 </body>
39 </html>
Las líneas 32 y 33 son las que permiten utilizar el API CanvasJS y Jquery. En estas líneas
“incluimos” en nuestro proyecto los recursos contenidos en dichos cheros,
Entre las líneas 3 y 31 se escribe el código en JavaScript, el cual se debe incluir dentro de
los indicadores <script></script>
Entre las líneas 4 y 30 es donde se de ne las acciones que se desean ejecutar en el
inicio, justo en la carga inicial de la página.
En las líneas 5 y 6 se de nen variables: dataLength almacenará la cantidad de datos
recuperados desde la base de datos; data[] es un arreglo en el cual guardaremos los
datos que recuperamos de la base de datos.
Entre las líneas 7 y 17 es donde importamos el JSON desde el chero data.php (el que
programamos en la sección anterior).
Entre las líneas 9 y 14 es donde recorremos el arreglo con los datos, extraemos la
información y la guardamos dentro de la variable data. La extracción de los datos del
JSON se da en la siguiente instrucción: parseInt(result[i].valorx), donde el parseInt
transformará el valor en un número entero. Nótese que valorx es el nombre que le
colocamos a la etiqueta en el JSON del script en PHP.
En la línea 16 es donde se renderiza el grá co.
Entre las líneas 18 y 29 es donde se crea la grá ca con el API CanvasJS. Se de ne el título
(línea 20), los títulos de los ejes (líneas 23 y 26) y por último se agrega el set de datos
que serán gra cados y el tipo de grá ca (línea 28).
En la línea 36 es donde se inserta la grá ca dentro del body del documento HTML. Esto
se logra a través de un <div> al cual se le asigna un id. En nuestro caso, el id lo hemos
llamado “chart”. La relación entre CanvasJS y el <div> se establece dentro de la línea 18.
Luego de crear el chero index.html con el código presentado estamos listos para
comprobar si nuestro código funciona. Lo corremos y en el navegador veremos lo
siguiente:
http://panamahitek.com/graficas-con-canvasjs/ 12/12