Como pasar datos de MySQL a XML con PHP
Este tutorial te mostrará como coger la información 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 diseñado un lenguaje, es posible extenderlo con la adición de nuevas etiquetas.
• El analizador es un componente estándar, no es necesario crear un analizador específico.
• 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 tendrás que cambiar la estructura de la base de datos existente. Los únicos cambios tendrás que hacerlos en el código 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.
Código 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 conexión MySQL:
$host = "localhost"; $user = "usuario"; $pass = "contraseña"; $database = "prueba";
Y ahora para hacer la conexión 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 conexión 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 líneas son para el bucle que saca la información 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 fácil hacer un seguimiento de nuestra información, porque cuando queremos sacar varios campos solo tendremos que poner $nombreMatriz['nombreCampo'].
Las tres líneas que utilizan str_replace corrigen los caracteres incorrectos en XML que podrían causar fallos. La razón 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 información 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("&", "&", $fila['texto']); $fila['texto'] = str_replace("<", "<", $fila['texto']); $fila['texto'] = str_replace(">", ">", $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 = "contraseña"; $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("&", "&", $fila['texto']); $fila['texto'] = str_replace("<", "<", $fila['texto']); $fila['texto'] = str_replace(">", ">", $fila['texto']); $salida_xml .= "\t\t<texto>" . $fila['texto'] . "</texto>\n"; $salida_xml .= "\t</persona>\n"; } $salida_xml .= "</informacion>"; echo $salida_xml; ?>
Consultas más exactas
También existe la posibilidad de hacer consultas más exactas.
Especificando una variable, mediante un formulario o a través de la url:
//Para formulario hay que usar POST $varUnic = $_POST['varUnic']; //Directamente desde la url con GET $varUnic = $_GET['varUnic'];
Después de esto solo hay que modificar la query:
$query = "SELECT * FROM tablaEjemplo WHERE varUnic=$varUnic";
Comentarios
Una respuesta para “Como pasar datos de MySQL a XML con PHP”
Deja una respuesta





[...] aplicaciones web, o incluso para CMS (Content Management Systems) para tu sitio o sitios web.Mas: http://www.bujorel.net/tutorial/como-pasar-datos-de-mysql-a-xml-con-php/ [...]