Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2013, 00:12
aldo_rengo
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
explicacion de codigo respaldar datos

hola miren tengo un codigo que segun dicen, respalda datos por medio de este codigo, nunca habia hecho cosas de backup por codigo,

ya conocen de estas cosas=? para un sistema esta bien esto de guardar datos,
pero nunca lo use.... algunas cosas de mysql no son de uso comun, digo . son basicas, pero no se usan seguido... por ejemplo en el momento de hacer un select.. en el codigo hay un "show tables"...
que me devuelve la consulta registros de las tablas??:::.. bueno ahi va el codigo...



Código PHP:
        include('sistema/modulos/bd/con_bd.php');
          
$tables '*';
          
//get all of the tables
          
if($tables == '*')
          {
            
$tables = array();
            
$result mysql_query('SHOW TABLES');
            while(
$row mysql_fetch_row($result))
            {
              
$tables[] = $row[0];
              
$result1 mysql_query('SELECT * FROM '.$row[0]) or die (mysql_error());
              
#echo "<br>";
              
$num_fields1 mysql_num_rows($result1);
              
#echo "<br>";
              
$total $total $num_fields1;
            }
          }
          else
          {
            
$tables is_array($tables) ? $tables explode(',',$tables);
          }
          
          
//cycle through
          
foreach($tables as $table)
          {
            
$result mysql_query('SELECT * FROM '.$table) or die (mysql_error());
            
$num_fields mysql_num_fields($result);
            
            
$return.= 'DROP TABLE '.$table.';';
            
$row2 mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
            
$return.= "\n\n".$row2[1].";\n\n";
            
            for (
$i 0$i $num_fields$i++) 
            {
              while(
$row mysql_fetch_row($result))
              {
                
$return.= 'INSERT INTO '.$table.' VALUES(';
                
$counter $counter 1;
                
$barpp $percent 2;
                
$percent ceil(($counter 100 )/$total);
                echo 
"<script>";
                echo 
"document.getElementById('val1').value = 'Procesado: ".$counter." registros de ".$total."';";
                echo 
"document.getElementById('val2').value = '".$percent."%';";
                echo 
"document.getElementById('val3').value = 'Copiando: ".$table."';";
                echo 
"document.getElementById('bar').style.left = '".$barpp."px';";
                echo 
"</script>";
                for(
$j=0$j<$num_fields$j++) 
                {
                  
$row[$j] = addslashes($row[$j]);
                  
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
                  if (isset(
$row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                  if (
$j<($num_fields-1)) { $return.= ','; }
                }
                
$return.= ");\n";
              }
            }
            
$return.="\n\n\n";
          }
                echo 
"<script>";
                echo 
"document.getElementById('barra').style.display = 'none';";
                echo 
"document.getElementById('val3').style.display = 'none';";
                echo 
"document.getElementById('val2').style.display = 'none';";
                echo 
"document.getElementById('loading').style.display = 'block';";
                echo 
"document.getElementById('val1').value = 'Grabando la copia local.';";
                echo 
"</script>";
          
//save file comprobar si existe el dir sino crear
          
          
        
$archivo_local 'sistema/modulos/backup/'.$_SESSION['db'].'/'.$_SESSION['db'].'-'.time().'.sql';
        
#$archivo_remoto =  $db.'-'.time().'.sql';
        
$handle fopen($archivo_local,'w+');
        
fwrite($handle,$return);
        
fclose($handle);

        
$time time();
        
$dir_loc $_SESSION['parent'].$archivo_local;
        include(
'sistema/modulos/bd/conexion.antilae.php');
        
$principal="INSERT INTO respaldo ( fecha, dir_loc, dir_rem, idsistema) VALUES ( '{$time}', '{$dir_loc}', '{$archivo_remoto}', '{$_SESSION['db']}')";
        
$insertar mysql_query($principal) ;
                echo 
"<script>";
                echo 
"document.getElementById('loading').style.display = 'none';";
                echo 
"document.getElementById('tick').style.display = 'block';";
                echo 
"document.getElementById('val1').value = 'Finalizado.';";
                echo 
"</script>"
bueno la idea es saber si es comun, esto de hacer respaldos. de datos,
genera un sql...

bueno coloco lo que entiendo si no van a decir, "que queres que te expliquemos el codigo? "



de entrada no entiendo por que el tables (en las primeras lineas), se asigna como asterisco, para luego tener un if, donde hay un else, entonces ese ELSE nunca se ingresa no??

............

despues hay un if, donde se ingresa siempre ya que compara si es asterisco bueno ingresa..

al princio, de todo, hace un include ese include, lo que tiene ese....

Código PHP:
<?php
$dbhost
="hosttt"
$dbuser="userr"
$dbpass="passs";
$db="basedatos"
mysql_connect("$dbhost","$dbuser","$dbpass")or die ("Error en la conexión a su base de datos.");
mysql_select_db("$db");
?>

teniendo la conexion por el include, hago una consulta sql...

$result = mysql_query('SHOW TABLES');

que me devuelve "show tables" nunca la habia escuchado...

es muy probable, ya que devuelva un registro, no recuerdo si con el mysql_fetch_row, devolvia solo un registro, o con el while iba pasado todos, de a uno...

bueno el tema es que toma el primer campo, con $row[0] y este es una tabla, trae todos los registros, y los acumula en un total,,,

despues esta el else que como dije no se como llega ahi,,,,

..........................

antes de ingresar al foreach, que tiene esta tabla, un registros o varios,,
son nombres de tablas,,,,
no=?

bueno y despues sigue,,, si quieren explicar, algo, expliquen o luego sigo yo, pero dejo el codigo asi masomenos lo ven,, que guarda=?? creo que un sql... escribe, no se bien...