Ir para conteúdo
  • 0
Paulo Oliveira Albuquerque

FAZENDO EXPORTAÇÃO DO BANCO DE DADOS MYSLQI

Pergunta

Ola galera

Preciso de ajuda se puderem me ajudar ai

Eu tenho o código de fazer EXPORTAÇÃO da database ela faz tudo certo e salva em uma pasta

porém quero que quando ela for baixado que tenha uma listagem dos que foi baixando sem precisar eu ter que abrir o cpanel e ir ate a pasta onde esta

 

Código do form

		<?php
		if(isset($_SESSION['msg'])){
			echo "<p>".$_SESSION['msg']."</p>";
			unset($_SESSION['msg']);
		}
		?>
		<form method="POST" action="processar.php" enctype="multipart/form-data">
									<div class="col-md-6">
										<div class="form-group">
											<label>Servidor:</label>
								    		<input class="form-control" name="servidor"  value="localhost" required>
										</div>
										</div>

									<div class="col-md-6">
										<div class="form-group">
											<label>Usuario:</label>
								    		<input class="form-control" name="usuario"  value="jnnews_99999" required>
										</div>
										</div>

									<div class="col-md-6">
										<div class="form-group">
											<label>Senha:</label>
								    		<input class="form-control" type="password" name="senha"  value="###9898-676#fvf#" required>
										</div>
										</div>

									<div class="col-md-6">
										<div class="form-group">
											<label>Banco de Dados:</label>
								    		<input class="form-control" name="dbname"  value="jnnews_99999" required>
										</div>
										</div>
											<center><hr>
												<button type="submit" class="btn btn-primary">Exportar</button>
												<br><br>
											</center>
											</form>

Aqui é o processar.php

 

<?php
session_start();
ob_start();
//Receber os dados do formulário
$servidor = $_POST['servidor'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$dbname = $_POST['dbname'];

//Criar a conexao com BD
$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);

//Incluir o arquivo que gerar o backup
include_once("gerar_dados.php");

header("Location: listar_database.php");

  Este é o gerar_dados.php


 

<?php

//Ler as tabelas
$result_tabela = "SHOW TABLES";
$resultado_tabela = mysqli_query($conn, $result_tabela);
while($row_tabela = mysqli_fetch_row($resultado_tabela)){
    $tabelas[] = $row_tabela[0];
}
//var_dump($tabelas);

$result = "";
foreach($tabelas as $tabela){
    //Pesquisar o nome das colunas
    $result_colunas = "SELECT * FROM " . $tabela;
    $resultado_colunas = mysqli_query($conn, $result_colunas);
    $num_colunas = mysqli_num_fields($resultado_colunas);
    //echo "Quantidade de colunas na tabela: ". $tabela. " - " . $num_colunas . "<br>";
    
    //Criar a intrução para apagar a tabela caso a mesma exista no BD
    $result .= 'DROP TABLE IF EXISTS '.$tabela.';';
    
    //Pesquisar como a coluna é criada
    $result_cr_col = "SHOW CREATE TABLE " . $tabela;
    $resultado_cr_col = mysqli_query($conn, $result_cr_col);
    $row_cr_col = mysqli_fetch_row($resultado_cr_col);
    //var_dump($row_cr_col);
    $result .= "\n\n" . $row_cr_col[1] . ";\n\n";
    //echo $result;
    
    //Percorrer o array de colunas
    for($i = 0; $i < $num_colunas; $i++){
        //Ler o valor de cada coluna no bando de dados
        while($row_tp_col = mysqli_fetch_row($resultado_colunas)){
            //var_dump($row_tp_col);
            //Criar a intrução da Query para inserir os dados
            $result .= 'INSERT INTO ' . $tabela . ' VALUES(';
            
            //Ler os dados da tabela
            for($j = 0; $j < $num_colunas; $j++){
                //addslashes — Adiciona barras invertidas a uma string
                $row_tp_col[$j] = addslashes($row_tp_col[$j]);
                //str_replace — Substitui todas as ocorrências da string \n pela \\n
                $row_tp_col[$j] = str_replace("\n", "\\n", $row_tp_col[$j]);
                
                if(isset($row_tp_col[$j])){
                    if(!empty($row_tp_col[$j])){
                        $result .= '"' . $row_tp_col[$j].'"';
                    }else{
                        $result .= 'NULL';
                    }
                }else{
                    $result .= 'NULL';
                }
                
                if($j < ($num_colunas - 1)){
                    $result .=',';
                }                
            }
            $result .= ");\n";
        }
    }
    $result .= "\n\n";
    //echo $result;
}

//Criar o diretório de backup
$diretorio = 'backup/';
if(!is_dir($diretorio)){
    mkdir($diretorio, 0777, true);
    chmod($diretorio, 0777);
}

//Nome do arquivo de backup
$data = date('d-m-Y');

$tempo= date('h-i-s');
$nome_arquivo = $diretorio . "jnnews_".$data_.$tempo;
//echo $nome_arquivo;

$handle = fopen($nome_arquivo . '.sql', 'w+');
fwrite($handle, $result);
fclose($handle);

//Montagem do link do arquivo
$download = $nome_arquivo . ".sql";

//Adicionar o header para download
if(file_exists($download)){
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private", false);
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=\"" . basename($download) . "\";");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: " . filesize($download));
    readfile($download);
    
    $_SESSION['msg'] = "<span style='color: green;'>Exportado BD com sucesso</span>";
}else{
    $_SESSION['msg'] = "<span style='color: red;'>Erro ao exportar o BD</span>";
}

Aqui seria a listagem da database que eu queria que ela aparece

 

 

						            	<div class="table-responsive">
							            	<table id="DataTable" class="table table-bordered table-striped">
								                <thead>
									                <tr>
									                  <th width="10px">ID</th>
									                  <th>Database</th>
									                  <th>Data</th>
                                                      <th>Hora</th>
									                  <th idth="53px">Baixar</th>
									                </tr>
								                </thead>
								                <tbody>
								                	<?php $Query = DBRead('database','*'); if (is_array($Query)) { foreach ($Query as $database) { ?>
								                		<tr>
										                  <td><?php echo $database['id']; ?></td>
									                      <td><?php echo $database['dbname']; ?></td>
									                      <td><?php echo $database['data']; ?></td>
                                                            <td><?php echo $database['hora']; ?></td>
                                                            <td><?php echo $database['nome_arquivo']; ?></td>

Tipo ai esta tipo uma tabela sql

o que eu preciso na verdade é que todos banco de dados baixado ele seja listado ai pra mim baixar

 

Se puderem me ajudar ai fico grato

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 resposta a esta questão

Recommended Posts

  • 0

Bom dia!

 

Usei este código para pegar os arquivos da Pasta e listar:

Observação gravar este php dentro da pasta que contenha a pasta Nome da Pasta.

 

$dir = 'Nome da Pasta/';

$fileList = scandir($dir);

$ultimo = end($fileList);

//echo "<pre>";
print_r($ultimo);
//echo "</pre>";

 

Neste exemplo pega apenas o último arquivo que entrou na pasta Nome da Pasta.

Para pegar a lista completa use este:

$dir = 'Nome da Pasta/';

$fileList = scandir($dir);

 

echo "<pre>";
print_r($fileList);
echo "</pre>";

 

Espero ter ajudado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.