Pasar una base de datos MYSQL a XML con PHP

Con este pequeño tutorial quiero mostrar como volcar la información almacenada en una base de datos MySQL y pasarla a un fichero XML mediante php.

Para este ejemplo he utilizado una base de datos (PRUEBAXML) con dos tablas, CDS (id,  artista, album, numeropistas) y SERIES (id, titulo, temporadas). Puedes probar este ejemplo con cualquier base de datos ya que vamos a ir recorriendo todas sus tablas  dinámicamente.

Codigo PHP:

Lo primero que vamos a hacer es establecer la conexión con la base de datos, para ello utilizaramos PDO (Objetos de Datos de PHP) lo que nos proporcionará una capa de abstacción de acceso a los datos.

Una vez que tenemos establecida la conexión tenemos que obtener las tablas de nuestra base de datos, para ello realizaremos la siguiente consulta:

Ahora vamos a crear la variable donde iremos metiendo el codigo xml que vayamos generando a través de los datos obtenidos de la base de datos.

Reccorremos las tablas de la base de datos dinámicamente y vamos escribiendo en la variable xml el nombre de la tabla donde agruparemos sus registros.

Ya solo nos queda recorrer la tabla para ir sacando los registros de la base de datos y almacenadolos en nuestra variable $xml.

Una vez que tenemos el codigo xml en nuestra variable vamos a volcarla a un fichero xml. La función que se encarga de volcar la variable $xml al fichero es la siguiente:

Por último solo nos queda llamar a la funcion crea_fichero() pasandole la variable $xml:

Os dejo el código completo de la aplicación a continuación. He dejado las salidas por pantalla para que veais los datos que se va ir almacenando en el fichero xml.

Y aquí la salida el fichero xml generado.

 

 

6 Comments
  • Darwin
    febrero 9, 2017

    saludos como podria hacer para que imprima en xml .
    tengo una tabla de peliculas
    peroq uiero imprimir solo la categoria que elija ejemplo «Accion» como podria hacerlo. gracias

    • admin
      noviembre 10, 2018

      Tienes que añadir la cabecera siguiente para que el navegador sepa que se trata de un xml.
      header(‘Content-type: text/xml’);

  • Gabriel
    noviembre 27, 2017

    Muchas gracias por el código y la explicación, me funcionó perfectamente, saludos.

    • admin
      noviembre 10, 2018

      Gracias por el comentario.

  • Fabian
    septiembre 12, 2018

    Hola, intente usar el PHP que publicaste, pero me muestra un error de conexion a la BD. No encuentro el error. Los datos de conexion son correctos. Cual puede ser el error.

    Estos son los datos copiados del panel de control
    Usuario c0220176_wordpre
    Clave: ta79kuWEse
    Base de datos: c0220176_wordpre
    Servidor: localhost

    Y este es el codigo tuyo con los datos
    /*
    * Creamos la conexion con la base de datos mediante PDO */

    $opc = array(PDO::MYSQL_ATTR_INIT_COMMAND => «SET NAMES utf8»);
    $dsn = «mysql:host=localhost;dbname=c0220176_wordpre»;//datos conexion bbdd
    $usuario = ‘c0220176_wordpre’;
    $contrasena = ‘ta79kuWEse’;

    $dwes = new PDO($dsn, $usuario, $contrasena, $opc);//conexion

    • admin
      noviembre 10, 2018

      Desde donde estas ejecutando el script php? ya que si lso datos son correctos deberia conectarte con la base de datos.

Write a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *