Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/07/2011, 05:17
Avatar de aniMAYtions
aniMAYtions
 
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: backup db desde script?

Gracias otra vez por la respuesta Marvin.

Veamos. La función que contiene el código para generar el archivo es una función xajax, por el tema de llamarla con un botón desde otra función xajax. No sé si eso será correcto o es lo que me está fallando.

Pulso el botón de generar y no hace nada. Absolutamente nada, ni me da error.
Puede ser por lo que digo anteriormente o porque no se especifica dónde guardar el archivo.
Os paso algo de código para que veais lo que he hecho

Código PHP:
//este es el botón del menú que invoca a la primera función
<div id='copia_seguridad' class='bot_izqd'>
                <
a href='#' onclick='xajax_eliminaTabla(); xajax_creaCopiaS(); '>Copia de Seguridad</a>
            </
div

//la función que aparece en pantalla cuando pulso el botón del menú
function creaCopiaS()
{
    
$respuesta = new xajaxResponse();
    
    
$salida .= "<div id='divcreacs'>
    <form name='fCopia' id='fCopia' action='#' value=''>
        <table id='tcopia' class='form'>
            <thead>
            <tr>
                <th>Copia de Seguridad</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <th colspan='2'>&nbsp;</th>
            </tr>
            
            <tr>
                <th colspan='2'>&iquest;Est&aacute;s seguro de que deseas hacer una copia de seguridad de la base de datos?</th>
            </tr>
            <tr>
                <td colspan='2'><input type='button' id='bcreacopia' name='bcreacopia' value='Aceptar' onclick='xajax_copiaBD()'/></td>
            </tr>
            </tbody>
        </table>
    </form>
    </div>"
;

//la función adaptada que copié del enlace

function copiaBD()
{
    
$conexion conectar();
    
    
$date_month date('m');
    
$date_year date('Y');
    
$date_day date('d');
    
$Date "$date_year-$date_month-$date_day";
    
$nombre "copiabd_$Date.sql";

    
$drop false;
    
$tablas false;
    
    
$compresion "gz";
    
/* Se busca las tablas en la base de datos */
    
if ( empty($tablas) ) 
    {
        
$consulta "SHOW TABLES FROM ilscnse;";
        
$respuesta mysql_query($consulta$conexion) or die("No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_NUM)) 
        {
            
$tablas[] = $fila[0];
        }
    }


/* Se crea la cabecera del archivo */
    
$info['dumpversion'] = "1.1b";
    
$info['fecha'] = date("d-m-Y");
    
$info['hora'] = date("h:m:s A");
    
$info['mysqlver'] = mysql_get_server_info();
    
$info['phpver'] = phpversion();
    
ob_start();
    
print_r($tablas);
    
$representacion ob_get_contents();
    
ob_end_clean ();
    
preg_match_all('/(\[\d+\] => .*)\n/'$representacion$matches);
    
$info['tablas'] = implode(";  "$matches[1]);
    
$dump "
    # +===================================================================
    # | Generado el {$info['fecha']} a las {$info['hora']} por el usurio '$usurio'
    # | Servidor: {$_SERVER['HTTP_HOST']}
    # | MySQL Version: {$info['mysqlver']}
    # | PHP Version: {$info['phpver']}
    # | Base de datos: '$bd'
    # | Tablas: {$info['tablas']}
    # |
    # +-------------------------------------------------------------------
    
    "
;
    foreach (
$tablas as $tabla
    {
    
        
$drop_table_query "";
        
$create_table_query "";
        
$insert_into_query "";
        
        
/* Se halla el query que será capaz vaciar la tabla. */
        
if ($drop
        {
            
$drop_table_query "DROP TABLE IF EXISTS `$tabla`;";
        } 
        else 
        {
            
$drop_table_query "# No especificado.";
        }

        
/* Se halla el query que será capaz de recrear la estructura de la tabla. */
        
$create_table_query "";
        
$consulta "SHOW CREATE TABLE $tabla;";
        
$respuesta mysql_query($consulta$conexion) or die("No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_NUM)) 
        {
                
$create_table_query $fila[1].";";
        }
    
    
/* Se halla el query que será capaz de insertar los datos. */
        
$insert_into_query "";
        
$consulta "SELECT * FROM $tabla;";
        
$respuesta mysql_query($consulta$conexion) or die("No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_ASSOC)) 
        {
            
$columnas array_keys($fila);
            foreach (
$columnas as $columna
            {
                if ( 
gettype($fila[$columna]) == "NULL" 
                {
                    
$values[] = "NULL";
                } 
                else 
                {
                    
$values[] = "'".mysql_real_escape_string($fila[$columna])."'";
                }
            }
            
$insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", "$values).");\n";
            unset(
$values);
        }
    
        
$dump .= "
        
        # | Vaciado de tabla '$tabla'
        # +------------------------------------->
        $drop_table_query

        # | Estructura de la tabla '$tabla'
        # +------------------------------------->
        $create_table_query

        # | Carga de datos de la tabla '$tabla'
        # +------------------------------------->
        $insert_into_query
        "
;
    }

/* Envio */
    
if ( !headers_sent() ) 
    {
        
header("Pragma: no-cache");
        
header("Expires: 0");
        
header("Content-Transfer-Encoding: binary");
        switch (
$compresion) {
        
            case 
"gz":
                
header("Content-Disposition: attachment; filename=$nombre.gz");
                
header("Content-type: application/x-gzip");
                echo 
gzencode($dump9);
                break;
            case 
"bz2"
                
header("Content-Disposition: attachment; filename=$nombre.bz2");
                
header("Content-type: application/x-bzip2");
                echo 
bzcompress($dump9);
                break;
            default:
                
header("Content-Disposition: attachment; filename=$nombre");
                
header("Content-type: application/force-download");
                echo 
$dump;
        }
    }
     else 
     {
        echo 
"<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>";
    } 


Sé que entra en esta última función pues le puse un objResponse que me genera un popup. Pero ya os digo, no hace nada y no sé por qué es.

Gracias de nuevo y un saludo