3ª Parte continuación de Restaurar de 2016
Código PHP:
if (isset($_POST['upload'])) {
//echo "Files ".print_r($_FILES)."<br>";
//echo "POST ".print_r($_POST);
$path = dirname( __FILE__ );
$dir= $path.'/uploads/';
if (!is_dir($dir)) {
if (!mkdir($dir, 0777, true)) {
die('No se pudo crear el directorio.');
}
}
$uploadfile = $dir. basename($_FILES['userfile']['name']);
print '<pre>';
switch ($_FILES['userfile']['error']){
case 0:// UPLOAD_ERR_OK
//Debug("Sin error en fichero",$_FILES['userfile']['error'],true);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
//Debug("Archivo subido",$uploadfile);
echo "El archivo <b> $uploadfile </b> es válido y fue cargado exitosamente.<br>";
$NewBD=$_POST["NewBD"];
$tblName=$_POST["tblName"];
$DropDataBase= isset($_POST["DropDataBase"]) && ($_POST['DropDataBase'] =="true")? true : false;
$InsertDatos= isset($_POST["InsertDatos"]) && ($_POST['InsertDatos'] =="true")? true : false;
$VerSoloErrores= isset($_POST["VerSoloErrores"]) && ($_POST['VerSoloErrores'] =="true")? true : false;
$fixUtf8=isset($_POST["fixUtf8"]) && ($_POST['fixUtf8'] =="true")? true : false;
$BD= run_split_sql($uploadfile, $host, $usuario,$passwd ,$NewBD,$DropDataBase,$InsertDatos,$VerSoloErrores, $fixUtf8,$tblName);
} else echo "<br>¡Posible errror en carga de archivos!";
break;
case 1: // UPLOAD_ERR_INI_SIZE
echo "<br>El archivo sobrepasa el limite autorizado por el servidor(archivo php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "<br>El archivo sobrepasa el limite autorizado en el formulario HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "<br>El envio del archivo ha sido suspendido durante la transferencia!";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "<br>El archivo que ha enviado tiene un tamaño nulo !";
break;
default:
echo "<br>ERROR DESCONOCIDO !";
break;
}
print "</pre>";
unset($_POST['upload']);
$_POST[]=array();
}
if (!empty($BD)) {
$conexion = new mysqli($host, $usuario, $passwd,$BD) or die ("No se puede conectar con MySQL: %s\n". $conexion->connect_error);
if (!$conexion->set_charset("utf8")) { // cambiar el conjunto de caracteres a utf8
printf("Error cargando el conjunto de caracteres utf8: %s\n", $conexion->error);
exit();
}
$strSQL = "SHOW FULL TABLES FROM $BD WHERE Table_Type='BASE TABLE';"; //SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = :database AND TABLE_NAME = :table
$respuesta = $conexion->query($strSQL)or die("No se puede ejecutar la consulta: $strSQL MySQL: \n". $conexion->error);
$NumTablas = $respuesta->num_rows;
$opcionesSelect="";
while ($tabla = $respuesta->fetch_array(MYSQLI_NUM)) {
$opcionesSelect.= "<option value='$tabla[0]'> $tabla[0] </option>";
}
$respuesta->free();
$conexion->close();
$CurrentURL=$_SERVER['PHP_SELF'];
echo "<form id='formEmptyTables' name='formEmptyTables' method='POST' action='$CurrentURL'>
<INPUT type='hidden' name='host' value='$host'>
<INPUT type='hidden' name='usuario' value='$usuario'>
<INPUT type='hidden' name='passwd' value='$passwd'>
<INPUT type='hidden' name='BD' value='$BD'>
<h2>Tablas en la Base de Datos : </h2>
<label>
Mantener pulsado la tecla <ctrl> + clic
</label><BR />
<select name='Tablas[]' size='$NumTablas' multiple='multiple' tabindex='1'>
$opcionesSelect
</select> <BR /><BR />
<label> Operacion sobre tablas seleccionadas: </label><BR />
<select name='OpSQL' size='7' >
<option value='Select'> Select </option>
<option value='Empty'> Empty/Truncate/Delete </option>
<option value='Drop'> Drop </option>
<option value='Rename'> Rename </option>
<option value='Duplicate'> Duplicate/Copy </option>
<option value='ShowCreateTable'> Definicion DDL </option>
<option value='ShowTableStatus'> Propiedades </option>
</select><BR /><BR />
<label> Instruccion SQL : (es idependiente de las tablas seleccionadas)</label><BR />
<TEXTAREA name='strSQL' rows='4' cols='80'></TEXTAREA><BR />
<input type='submit' name='DoSQL' value='[ Ejecutar ]' tabindex='2' />
</form> ";
}
?>