JSON II – Creación de un JSON a partir de una consulta en MySQL
En este segundo tutorial sobre JSON vamos a aprender a generar un JSON a partir de una consulta en MySQL. Este tutorial es el segundo tutorial de una serie de tutoriales sobre JSON. Me gustaría pedir disculpas por haber tardado tanto en hacer esta segunda parte, pero cuando se está de Erasmus en Irlanda el tiempo vuela, y como lo prometido es deuda aquí estamos :)
Si no has visto el tutorial número I, te recomiendo que lo veas con determinación ya que es la base de JSON. Podéis ver a continuación los enlaces a los demás tutoriales de esta serie.
- ¿Qué es y para qué sirve JSON?.
- Creación de un JSON a partir de una consulta en MySQL.
- Gestionar JSON en PHP.
- Ejemplo práctico de uso de JSON con OpenWeatherMap.
Por lo tanto, sin más rodeos podemos empezar nuestro segundo tutorial de JSON.
Este segundo tutorial de JSON lo vamos a dividir en 3 partes:
- Generar una conexión a la base de datos.
- Obtener un array multidimensional de una consulta.
- Generar JSON a partir del array.
Generar una conexión a la base de datos
Para todos aquellos que estén familiarizados con las bases de datos se pueden saltar este punto. En caso contrario, prestad atención.
Para generar una consulta en una base de datos primero tenemos que generar una conexión con esta, para hacer esto en PHP podemos usar las funciones que vienen por defecto en PHP5, estas funciones ayudan mucho a la hora de gestionar la información de la base de datos. Una vez realizada la consulta debemos de eliminar la conexión a la base de datos.
Para conectarnos a la base de datos podemos usar sencilla función implementada por mí:
function connectDB(){ $conexion = mysqli_connect("SERVER", "USER", "PASS", "BASEDEDATOS"); if($conexion){ echo 'La conexión de la base de datos se ha hecho satisfactoriamente '; }else{ echo 'Ha sucedido un error inesperado en la conexión de la base de datos '; } return $conexion; }
Esta función devuelve en una variable la conexión a la base de datos, esta conexión será importante a la hora de realizar la consulta.
Para la desconexión de la base de datos usamos la siguiente función:
function disconnectDB($conexion){ $close = mysqli_close($conexion); if($close){ echo 'La desconexión de la base de datos se ha hecho satisfactoriamente '; }else{ echo 'Ha sucedido un error inesperado en la desconexión de la base de datos '; } return $close; }
Esta función devuelve un parámetro booleano indicando si la desconexión a tenido éxito o no.
Obtener un array multidimensional de una consulta
El siguiente paso que debemos seguir es la realización de la consulta. Para realizar la consulta también podemos usar otra sencilla función implementada por mí. Esta función tiene como parámetro de entrada una orden SQL. Para más información sobre sentencias SQL recomiendo que miréis esta página W3School.
function getArraySQL($sql){ //Creamos la conexión con la función anterior $conexion = connectDB(); //generamos la consulta mysqli_set_charset($conexion, "utf8"); //formato de datos utf8 if(!$result = mysqli_query($conexion, $sql)) die(); //si la conexión cancelar programa $rawdata = array(); //creamos un array //guardamos en un array multidimensional todos los datos de la consulta $i=0; while($row = mysqli_fetch_array($result)) { $rawdata[$i] = $row; $i++; } disconnectDB($conexion); //desconectamos la base de datos return $rawdata; //devolvemos el array }
Como se puede observar esta función devuelve un array multidimensional, es decir una matriz. Para que entendáis como funciona imaginaos una tabla. donde tenemos columnas y filas; las columnas vienen representadas por los tipos de datos que hemos solicitado a la base de datos, y las filas vienen representadas por el dato en sí.
Pongamos un ejemplo: imaginaos que tenemos una base de datos de una frutería, en una tabla de esta base de datos tenemos 3 columnas, que son id_fruta, nombre_fruta y cantidad. Esta tabla esta llena de datos, para que se vea el ejemplo imaginemos que tenemos la siguiente tabla ejemplo:
id_fruta | nombre_fruta | cantidad |
---|---|---|
1 | Manzana | 100 |
2 | Platano | 167 |
3 | Pera | 820 |
Así pues, si pasamos la sentencia SQL que genera esta tabla en nuestra función obtendremos un array multidimensional. Si por ejemplo queremos obtener la cantidad de platanos tan sólo tendriamos que buscar en el array de la siguiente forma:
array[1][2];Warning! Los indices de un array empiezan por cero.Para más información ver tutorial - Arrays en PHP-.
Generar JSON a partir del array
Una vez que ya tenemos nuestro array multidimensional tan solo nos queda transformar los datos de nuestro array a un formato JSON. Para ello tenemos la suerte de que PHP nos ayuda en esta tarea, así pues, usaremos la función json_encode($array).
Si hacemos un echo del resultado de esta función nos encontraremos con algo parecido a esto:
[{"0":"1","id_fruta":"1","1":"Manzana","nombre_fruta":"Manzana","2":"100","cantidad":"100"},{"0":"2","id_fruta":"2","1":"Platano","nombre_fruta":"Platano","2":"167","cantidad":"167"},{"0":"3","id_fruta":"3","1":"Pera","nombre_fruta":"Pera","2":"820","cantidad":"820"}]
Podemos observar más gráficamente este JSON con la herramienta de visualización de JSON llamada JSONviewer.
Un ejemplo completo de este tutorial sería el siguiente, donde tendremos que rellenar las variables que aparecen al inicio del script.
sql = "SQL" //ejemplo frutería: SELECT id_fruta,nombre_fruta,cantidad FROM tabla_fruta; function connectDB(){ $server = "SERVER"; $user = "USER"; $pass = "PASS"; $bd = "BD"; $conexion = mysqli_connect($server, $user, $pass,$bd); if($conexion){ echo 'La conexion de la base de datos se ha hecho satisfactoriamente '; }else{ echo 'Ha sucedido un error inexperado en la conexion de la base de datos '; } return $conexion; } function disconnectDB($conexion){ $close = mysqli_close($conexion); if($close){ echo 'La desconexion de la base de datos se ha hecho satisfactoriamente '; }else{ echo 'Ha sucedido un error inexperado en la desconexion de la base de datos '; } return $close; } function getArraySQL($sql){ //Creamos la conexión con la función anterior $conexion = connectDB(); //generamos la consulta mysqli_set_charset($conexion, "utf8"); //formato de datos utf8 if(!$result = mysqli_query($conexion, $sql)) die(); //si la conexión cancelar programa $rawdata = array(); //creamos un array //guardamos en un array multidimensional todos los datos de la consulta $i=0; while($row = mysqli_fetch_array($result)) { $rawdata[$i] = $row; $i++; } disconnectDB($conexion); //desconectamos la base de datos return $rawdata; //devolvemos el array } $myArray = getArraySQL($sql); echo json_encode($myArray); ?>
Y esto es todo, en el siguiente tutorial vamos a ver cómo obtener y gestionar los datos de un JSON en PHP. Así pues, si os ha gustado el tutorial os pido que lo compartáis en vuestras redes sociales, para que la comunidad de Geeky Theory crezca. También me gustaría motivaros a que colaboréis con nosotros escribiendo vuestros propios tutoriales, reviews o noticias.
Un saludo!!!