E hecho ese procedimiento y lo que hice fue crear un archivo xml y luego traducirlo
🙂.. Te dejo los pasos y el script en php
1 - Conectar a la base de datos y crear el XML.
El script es muy sencillo de utilizar, con tan solo indicar los datos de conexión a la base de datos ( Nombre de usuario, contraseña y el hostname) se encargará de generar el archivo XML.
El contenido del XML contendrá la información de tablas de todas las bases de datos del usuario que se especifique en el formulario, así como también la información de cada campo ( El nombre, el tipo de dato que almacena, etc ..)
2 - Código fuente PHP.
Este es el código PHP. Puedes pegar el siguiente código en un fichero PHP, luego ubicarlo en una carpeta del servidor y ejecutarlo para desplegar el formulario.
PHP:
<?php
error_reporting(0);
// Función para escribir la cabecera del html. Para la opción de guardar el XML, esta función no es necesaria
function writeHeader(){
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Database To XML</title>
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>';
}
// Comprobar si los botones del formulario se han presionado.
if (isset($_POST['saveBtn']) || isset($_POST['dispBtn'])){
// Establecer los valores por defecto y variables en los campos de entrada para el usuario, password etc ...
$host = isset($_POST['hostname'])? $_POST['hostname'] : 'localhost';
$user = isset($_POST['username'])? $_POST['username'] : '';
$pass = isset($_POST['password'])? $_POST['password'] : '';
$port = isset($_POST['port']) ? $_POST['port'] : '3306';
$out = '';
$outfile= '';
$fullhost = $host.":".$port;
// Generar la conexión a MySQL.
$link = mysql_connect($fullhost,$user,$pass);
// Verificar que la conexión a la base de datos sea correcta.
if (!$link){
echo '<div id="main"><div id="formheader">Can not connect to database: '.mysql_error().' </div></div>';
die;
}
// Obtener todas las bases de datos del usuario.
$dbs = mysql_query('SHOW DATABASES');
$outfile.='<MySQLserver hostname="'.$host.'" username="'.$user.'" password="'.$pass.'" port="'.$port.'">'."\n";
$out .= htmlspecialchars('<MySQLserver hostname="'.$host.'" username="'.$user.'" password="'.$pass.'" port="'.$port.'">'."\n");
while ($dbrow = mysql_fetch_array($dbs, MYSQL_NUM)) {
$db = $dbrow[0];
mysql_selectdb($db,$link);
$result = mysql_query('SHOW TABLES');
$outfile.=" <Database name='$db'>\n";
$out.="***";
$out.=htmlspecialchars("<Database name='$db'>\n");
// Recuperar todas las tablas de la base de datos.
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
$table = $row[0] ;
$struct = mysql_query('DESCRIBE '.$table);
$outfile.=' <Table name="'.$table.'">'."\n";
$out.="******";
$out.= htmlspecialchars('<Table name="'.$table.'">'."\n");
// Recuperar todos los campos de la tabla.
while ($row2 = mysql_fetch_array($struct, MYSQL_NUM)) {
$autoi = (strstr($row2[5],'auto_increment')) ? 'YES' : 'NO';
$tmp =' <Field name="'.$row2[0].'" ';
$tmp.='type="'.$row2[1].'" ';
$tmp.='null="'.$row2[2].'" ';
$tmp.='key="'.$row2[3].'" ';
$tmp.='default="'.$row2[4].'" ';
$tmp.='autoinc="'.$autoi.'"/>'."\n";
$outfile.=$tmp;
$out.="*********";
$out.=htmlspecialchars($tmp);
}
// Cerrar los tags de tabla.
$outfile.=' </Table>'."\n";
$out.="******";
$out.=htmlspecialchars('</Table>'."\n");
}
// Cerrar los tags de base de datos.
$outfile.=" </Database>\n";
$out.="***";
$out.=htmlspecialchars("</Database>\n");
}
// Cerrar los tags del servidor
$outfile.='</MySQLserver>';
$out.=htmlspecialchars('</MySQLserver>');
// Verificar el formato de salida y guardar el resultado.
if (isset($_POST['dispBtn'])){
writeHeader();
echo '<div id="main2"><div id="formbody2">';
echo nl2br($out) ;
echo '</div></div>';
}
else{
// Guardar el resultado como archivo XML.
$filecontent=$outfile;
$downloadfile='MySQL_Server.xml';
header("HTTP/1.1 200 OK");
header("Content-Length: ".strlen($filecontent));
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$downloadfile");
header("Content-Transfer-Encoding: binary");
echo $filecontent;
}
}
// Desplegar el formulario.
else {
writeHeader();
?>
<div id="main">
<div id="formheader">Database connection informations</div>
<div id="formbody">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="dbXml" id="dbXml">
<table align="center">
<tr><th>Hostname:</th><td><input name="hostname" type="text" size="30" maxlength="15" value="localhost"></td></tr>
<tr><th>Username:</th><td><input name="username" type="text" size="30" maxlength="15"></td></tr>
<tr><th>Password:</th><td><input name="password" type="password" size="30" maxlength="15"></td></tr>
<tr><th>Port:</th><td><input name="port" type="text" size="30" value="3306"></td></tr>
<tr>
<td align="center"><br/><input class="text" type="submit" name="saveBtn" value="Save as..."></td>
<td align="center"><br/><input class="text" type="submit" name="dispBtn" value="Display output"></td>
</tr>
</table>
</form>
</div>
</div>
</body>
<?php
}
?>
Luego usa un traductor de xml
🙂 que hay varios en la web...
PD: Si me interesan los 5 dolares
🙂 jajaja Saludos!!!!