You are on page 1of 3

Como pasar datos de MySQL a

XML con PHP


Este tutorial te mostrar como coger la informacin almacenada en una
base de datos MySQL y pasarla a XML. Desde ah puedes usar el XML
como quieras. Esto puede ser til para blogs, aplicaciones web, o incluso
para CMS (Content Management Systems) para tu sitio o sitios web.
Utilizar XML tiene muchas ventajas:
Es extensible. Una vez diseado un lenguaje, es posible extenderlo con
la adicin de nuevas etiquetas.
El analizador es un componente estndar, no es necesario crear un
analizador especfico.
Soporta Unicode.
Si un tercero decide usar un documento creado en XML, es sencillo
entender su estructura y procesarlo.
Preparar la base de datos
Lo bueno de esto es que no tendrs que cambiar la estructura de la base
de datos existente. Los nicos cambios tendrs que hacerlos en el
cdigo PHP.
Como es solo un ejemplo voy a incluir nicamente cuatro campos en la
bbdd: id, nombre, email y texto y una tabla llamada tablaEjemplo.
Cdigo PHP
Primero hay que especificar para el navegador u otra aplicacion que
usar este archivo, que lo interprete como XML y no como PHP.
header("Content-type: text/xml");
El segundo paso es especificar las variables para la conexin MySQL:
$host = "localhost";
$user = "usuario";
$pass = "contrasea";
$database = "prueba";
Y ahora para hacer la conexin al servidor MySQL, utilizamos las
variables establecidas antes:
$enlace = mysql_connect($host, $user, $pass) or die("Error MySQL.");
mysql_select_db($database, $enlace) or die("Error base de datos.");
Una vez la conexin creada hay que ejecutar la query que deseamos.
Posteriormente guardamos la consulta en la variable $resultado:

$query = "SELECT * FROM tablaEjemplo ORDER BY id ASC";


$resultado = mysql_query($query, $enlace) or die("Sin resultados.");
Ahora hay que crear una variable XML de datos:
$salida_xml = "<?xml version=\"1.0\"?>\n";
$salida_xml .= "<informacion>\n";
Las siguientes lneas son para el bucle que saca la informacin con la
query y mantiene el bucle tanto como filas tiene nuestra base de datos.
Mysql_fetch_assoc() toma la fila actual en la base de datos y lo
exporta como una matriz (array) asociativa. Esto hace mas fcil hacer un
seguimiento de nuestra informacin, porque cuando queremos sacar
varios campos solo tendremos que poner
$nombreMatriz['nombreCampo'].
Las tres lneas que utilizan str_replace corrigen los caracteres
incorrectos en XML que podran causar fallos. La razn por la que solo se
corrige la fila [texto] es porque es la nica donde existe la posibilidad
de contener esos caracteres.
Para utilizar la informacin sacada de la base de datos hay que poner
$fila ['id'] entre las etiquetas XML.
for($x = 0 ; $x < mysql_num_rows($resultado) ; $x++){
$fila = mysql_fetch_assoc($resultado);
$salida_xml .= "\t<persona>\n";
$salida_xml .= "\t\t<nombre>" . $fila['nombre'] . "</nombre>\n";
$salida_xml .= "\t\t<email>" . $fila['email'] . "</email>\n";
// Corrigiendo caracteres incorrectos
$fila['texto'] = str_replace("&", "&amp;", $fila['texto']);
$fila['texto'] = str_replace("<", "&lt;", $fila['texto']);
$fila['texto'] = str_replace(">", "&gt;", $fila['texto']);
$salida_xml .= "\t\t<texto>" . $fila['texto'] . "</texto>\n";
$salida_xml .= "\t</persona>\n";
}
Cierro los datos XML con la variable abierta antes:
$salida_xml .= "</informacion>";
Finalmente hay que poner la cadena de salida XML:
echo $salida_xml;
Resultado final:
<?php

header("Content-type: text/xml");

$host = "localhost";
$user = "usuario";
$pass = "contrasea";
$database = "prueba";

$enlace = mysql_connect($host, $user, $pass) or die("Error MySQL.");


mysql_select_db($database, $enlace) or die("Error base de datos.");

$query = "SELECT * FROM tablaEjemplo ORDER BY id ASC";


$resultado = mysql_query($query, $enlace) or die("Sin resultados.");

$salida_xml = "<?xml version=\"1.0\"?>\n";


$salida_xml .= "<informacion>\n";

for($x = 0 ; $x < mysql_num_rows($resultado) ; $x++){


$fila = mysql_fetch_assoc($resultado);
$salida_xml .= "\t<persona>\n";
$salida_xml .= "\t\t<nombre>" . $fila['nombre'] . "</nombre>\n";
$salida_xml .= "\t\t<email>" . $fila['email'] . "</email>\n";
// Corregiendo caracteres incorrectos
$fila['texto'] = str_replace("&", "&amp;", $fila['texto']);
$fila['texto'] = str_replace("<", "&lt;", $fila['texto']);
$fila['texto'] = str_replace(">", "&gt;", $fila['texto']);
$salida_xml .= "\t\t<texto>" . $fila['texto'] . "</texto>\n";
$salida_xml .= "\t</persona>\n";
}

$salida_xml .= "</informacion>";

echo $salida_xml;

?>
Consultas ms exactas
Tambin existe la posibilidad de hacer consultas ms exactas.
Especificando una variable, mediante un formulario o a travs de la url:
//Para formulario hay que usar POST
$varUnic = $_POST['varUnic'];
//Directamente desde la url con GET
$varUnic = $_GET['varUnic'];
Despus de esto solo hay que modificar la query:
$query = "SELECT * FROM tablaEjemplo WHERE varUnic=$varUnic";
21 de Dec del 2007 | Publicado en Tutorial
21 comentarios

http://www.bujorel.net/tutorial/como-pasar-datos-de-mysql-a-xml-con-php/

You might also like