Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2003, 14:04
cards
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 20 años, 6 meses
Puntos: 0
descargar una base de datos

hola a todos...
arto de que todos los scripts que me ponian no me funcionavan... fui buscando por este foro otras alternativas...... hasta que encontre un script de un tal fran86 (si mal no recuerdo) que puso un script para descargar los datos de una base de datos a un archivo (osea un backup) sin necesidad de utilizar el dichoso "mysqldump.exe".... ese escript me funciono a las mil maravillas pero solo guardabas los datos de una tabla..... asi que basandome en la idea de ese script he echo otro que funciona con todas las tablas ^_^. solo se tiene que poner el nombre de base de datos y este script extrae los datos de todas las tablas.

aqui les dego el codigo

Código PHP:
<?php
//Variables
$Usuario "elusuario";
$Password "lacontraseña";
$Servidor "localhost";
$BaseDeDatos "labasededatos";
$Archivo "fichero.txt"//podeis poner el nombre de archivo que querais con la extension que os de la gana
$EliminarTablas true;    //aqui poned si quereis que se elimen las tablas si existen        

//Conectar con la base de datos
$Conexion mysql_connect($Servidor$Usuario$Password);
mysql_select_db($BaseDeDatos$Conexion);

$ListaTablas mysql_listtables ($BaseDeDatos);
For (
$Numero 0$Numero mysql_num_rows ($ListaTablas); $Numero++) {
    
$Tablas[] = mysql_tablename ($ListaTablas$Numero);
    
$Querys .= CrearQuerys$Conexion$Tablas[$Numero], $EliminarTablas);
}

// Enviamos los datos
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$Archivo");
echo 
$Querys;

Function 
CrearQuerys($Conexion$Tabla$EliminarTablas) {
// Query que elimina las tablas si existen
if ($EliminarTablas) {
    
$QueryEliminarTabla "DROP TABLE IF EXISTS `$Tabla`;";
}

// Query que crea la estructura de la tabla
$sql"SHOW CREATE TABLE $Tabla;";
$Respuesta mysql_query($sql$Conexion);
$ArrayRespuesta mysql_fetch_array($Respuesta);
$QueryEstructuraTabla $ArrayRespuesta[1].";";

// Query que introduce los datos en la tabla
$sql "SELECT * FROM $Tabla;";
$Respuesta mysql_query($sql$Conexion);
while (
$Fila mysql_fetch_array($RespuestaMYSQL_ASSOC)) {
    
$Columnas array_keys($Fila);
     foreach (
$Columnas as $Columna) {
         if ( 
gettype($Fila[$Columna]) == "NULL" ) {
            
$Valores[] = "NULL";
         } else {
             
$Valores[] = "'".$Fila[$Columna]."'";
        }
    }
    
$QueryInsertarDatos .= "INSERT INTO `$Tabla` VALUES (".implode(", "$Valores).");\n";
    unset(
$Valores);
}

$Contenido = <<<EOT
$QueryEliminarTabla
$QueryEstructuraTabla
$QueryInsertarDatos

EOT;

return 
$Contenido;
}
?>
bueno que os parece lo que he echo?
probadlo y decidme si hos funciona...... :P (a mi me fuciona)
deberia poner este script en las faqs?

Última edición por cards; 25/11/2003 a las 14:09