Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael D. Nicolau

Gerar CSV apartir de uma consulta SQL

Recommended Posts

Boa noite galera!!!

 

Gostaria de saber se tem alguma maneira de transformar uma consulta SQL em um arquivo CSV com opção de escolha para salvar o arquivo no PC como um download sabe?

Espero que vocês possam me ajudar!!!!

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente, desta consulta você vai ter que montar o arquivo em uma string para então jogá-la em um arquivo do seu servidor, isto será temporário.

 

Tento este arquivo é só fazer o script de download do mesmo.

 

Estes são os passo, vejamos agora, qual parte você quer ajuda de saber nem por onde começar?

 

[]'s :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom a parte de criar a consulta e gerar um csv está pronta:

$csv_output = "column 1,column2,column3,column4"; 
   $csv_output .= "\n"; 
   $sqlquery1="SELECT Mac,Grupo,Modelo,Impressora, Sum(Paginas)/100 AS Paginas FROM fax_eq WHERE FinishDateTime BETWEEN '".$data_inicial."' AND '".$data_final."' Group By Grupo,Modelo,Impressora,Mac ORDER BY Grupo,Modelo,Impressora";
   $result=odbc_exec($sqlconnect, $sqlquery1);
   
   while($row = odbc_fetch_row($result)) { 
	   $csv_output .= "$Grupo,$Modelo,$Impressora,intval($Fax)\n";
	   } 
   print $csv_output;
   exit;

Falta a parte de salvar o arquivo no computador estou tentando usar "headers" mai não está funcionando no meu código...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, esse $csv_output você precisa primeiro salvar em seu servidor, em uma pasta de arquivos temporários por exemplo.

<?php
	$filename = "nome_do_arquivo.csv";
	$fp = fopen("./tmp/$filename", "w");
	fwrite($fp, $csv_output);
	fclose($fp);
?>

Pronto, você já tem o arquivo no servidor, agora é só fazer o download:

<?php
$size = filesize("./tmp/" . $filename);

header("Content-type: text/plain");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");

readfile("./tmp/" . $filename);
?>

Acho que é isso, tenta ae. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

não precisa gerar arquivo no seu servidor, se eu fizesse isso aqui na empresa ia entupir o servidor com os relatórios que o pessoal tira,

 

usando a linha "header("Content-Disposition: attachment; filename=$filename");" você está indicando ao servidor que tudo que for gerado no php será convertido em um anexo que a pessoa terá a opção de salvar, faça assim:

 

$flename = [o nome que você quer].csv;

header("Content-Disposition: attachment; filename=$filename");

 

e manda embora aqueles comandos de gerar arquivo no servidor pelamordedeus! :rolleyes:

lembrando que como $filename é uma variável, você pode dar nomes dinâmicos para os arquivos de acordo com a situação, apenas com a obrigação de terminá-lo com ".csv"

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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