Ir para conteúdo

POWERED BY:

Arquivado

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

marcosfj1

[Resolvido] Gerar arquivo da consulta no excel

Recommended Posts

Bom galera seguinte, eu já consegui fazer isso, mas quero aperfeiçoar, e preciso da ajuda de vcs.

 

Primeira coisa q quero melhor:

 

Atualmente tem la a pagina(clientes_bloqueados.php) de dados do meu banco, e la no final dela eu coloquei:

<tr align="right" >
     <td colspan="3" > <a href=caminho/excel_clientes_bloqueados.php'>Gerar Arquivo Excel</a></td>
</tr>

 

Bom qdo o cara clica no link, beleza gera o arquivo....mas nao queria q estivesse em um link queria q fosse num botao(tipo submit), por uma questao de aparencia...como eu poderia fazer isso?

 

=========================================================================================

 

Segunda mudança:

 

Esta acho q vai dar trabalho, é na pagina excel_clientes_bloqueados.php

 

Bom vou postar todo o codigo dela para vcs verem:

 

<table>
<tr>
     <td>
         <?php 
		 $arquivo = 'clientes_bloqueados.xls';  
		 $html = '';  
		 $html .= '<table broder = "1">'; 
		 $html .= '<tr>';  
		 $html .= '<td colspan="4"></tr>';  
		 $html .= '</tr>';  
		 $html .= '<tr>';  
		 $html .= '<td colspan="4">Pontos Clientes</tr>';  
		 $html .= '</tr>';
		 $html .= '<tr>';  
		 $html .= '<td colspan="4"></tr>';  
		 $html .= '</tr>';  			  
		 $html .= '<tr>';  
		 $html .= '<td><b>Nome</b></td>';  
		 $html .= '<td><b>Email</b></td>';  
		 $html .= '<td><b>Dt_Pedido</b></td>';
		 $html .= '<td><b>Meses</b></td>'; 
		 $html .= '<td><b>Dt_Reativacao</b></td>'; 
		 $html .= '<td><b>Controle</b></td>';
		 $html .= '<td><b>Tipo 1-Logista / 2-Profissional</b></td>';    
		 $html .= '</tr>';  


		$sql="SELECT *, DATE_FORMAT(dt_reativacao, '%d/%m/%y') AS dt_reativacao, DATE_FORMAT(dt_pedido, '%d/%m/%y') AS dt_pedido
		FROM clientes_bloqueados 
		WHERE id_cliente IS NOT NULL
		AND st_ativo = 0
		AND meses >= 4";

//
$req = mysql_query($sql) or die(mysql_error());

		while ($cp = mysql_fetch_array($req)) {


  			$html .= '<tr>';
   		$html .=  '<td align="left">'.$cp["nome"].'</td>';
  			$html .=  '<td align="left">'.$cp["email"].' </td>';
   		$html .=  '<td align="left">'.$cp["dt_pedido"].'</td>';
   		$html .=  '<td align="left">'.$cp["meses"].'</td>';
   		$html .=  '<td align="left">'.$cp["dt_reativacao"].' </td>';
   		$html .=  '<td align="left">'.$cp["controle"].' </td>';
   		$html .=  '<td align="left">'.$cp["tipo_cliente"].' </td>';
 			$html .=  '</tr>';

   		} 
		 $html .= '</table>';  

		header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
		header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");  
		header ("Cache-Control: no-cache, must-revalidate");  
		header ("Pragma: no-cache");  
		header ("Content-type: application/x-msexcel");  
		header ("Content-Disposition: attachment; filename=\"{$arquivo}\"" );  
		header ("Content-Description: PHP Generated Data" );  

		echo $html;  
		exit;  
		?>



   </td>
   </tr>
</table>

 

Bom a pagina funciona perfeitamente, mas o q é ruim é q nela eu estou pegando os dados de uma tabela, assim como na pagina anterior q chama ela, mas lá em clientes_bloqueados.php eu posso fazer uma busca para restringir o numero de resultados...

 

Entao o q eu queria q qdo cara fizesse a busca e clicasse em gerar excel gerasse aquilo q foi mostrado, ou seja a consulta sql mas limitada a busca, e nao geral como eu fiz

 

Alguem saberia m ajudar?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

se eu entendi bem , e so você botar LIMIT na query hehe ..

 

Nao cara nao é bem isso.

 

Na pagina de clientes_bloqueados.php tem la as consultas e um campo de busca, entao se o cliente buscar pelo campo NOME o nome Marcos, vai trazer todos os ´Marcos´ da tabela....isso ta beleza e esta funcionando

 

Mas o q eu queria, eu busquei o nome Marcos veio todos, ai qdo clicar em gerar execel, mandar o resultado da busca para a outra pagina excel_clientes_bloqueados...pois la eu refaço a consulta mas queria q ela recebesse o valor da busca

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gerando arquivo CSV ... Mysql2CSV

 

Vixi cara este codigo seu é mto louco hehe, nao dou conta de mexer nisso nao....alem do q queria melhorar o meu q já esta funcionando e nao partir do zero

 

 

no caso o resultado do excel gerado ?

 

Sim, como passar aquilo q eu busquei numa pagina, para a condição sql da pagina em q gero o excel

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer passar todos os resultados ?? não podia ser so a query pra poder executar na pagina que gera o xls ?

 

Uai poderia atualmente minha query da pagina do excel esta assim:

$sql="SELECT *, DATE_FORMAT(dt_reativacao, '%d/%m/%y') AS dt_reativacao, DATE_FORMAT(dt_pedido, '%d/%m/%y') AS dt_pedido
		FROM clientes_bloqueados 
		WHERE id_cliente IS NOT NULL
		AND st_ativo = 0
		AND meses >= 4";

 

Já na pagina q tem a possibilidade de busca ela tbm esta assim, porem se eu busco algo, como o nome Marcos...claro ela se modifica para:


$sql5="SELECT *, DATE_FORMAT(dt_reativacao, '%d/%m/%y') AS dt_reativacao, DATE_FORMAT(dt_pedido, '%d/%m/%y') AS dt_pedido
		FROM clientes_bloqueados C
		WHERE id_cliente IS NOT NULL
		AND st_ativo = 0
		AND meses >= 4
                       AND AND {$_POST['pesquisa_campo']} LIKE '%{$_POST['pesquisa_valor']}%'

 

Onde $_POST['pesquisa_campo' = nome

e

{$_POST['pesquisa_valor']}% = Marcos

 

Ai q esta como mandar a consulta gerada apos a busca para a pagina do execel....dando assim a possibilidade do usuario gerar um arquivo excel baseado naquilo q ele pesquisou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kra, ja passei por esse problema tentando exportar relatórios...

 

 

Minha solução foi:

 

faça uma página php que escreva um HTML em branco +- assim:

 

 

<?php
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/x-msexcel");
header ("Content-Disposition: attachment; filename="nome_do_seu_arquivo.xls" );
header ("Content-Description: PHP Generated Data" );

echo '<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
   </head>
   <body>
AQUI VOCE CRIA SUA TABELA EM HTML NORMALMENTE
   </body>
</html>';
?>

 

 

O arquivo que chama este "conversor HTML>XLS" seria uma framework, onde voce faz as consultas de SQL e so indica este arquivo .php (ou se voce fizer em uma classe) para exibir o resultado e ja aparecer como download!

 

CLARO que daki voce adapta para seu uso!

 

 

 

boa sorte! abracos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara agradeco a ajuda....mas esta parte de gerar o arquivo eu já consegui, olha la no meu primeiro post aqui no topico

 

O problema é que eu queria mandar o resultado da consulta para a proxima pagina, para que eu nao precisasse fazer a consulta de novo....e assim qdo o cara fizer um busca, restringindo assim a consulta sql, ele exportaria para a proxima pagina esta consulta

 

Consegui explicar?

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta gravar a query na sessão e executar depois.

Caso o resultado da consulta não seja enorme, você pode

gravar este resultado na sessão e utilizado para exportar

quando necessário, sem ter de consultar o banco novamente.

 

Exemplo de SESSAO

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

index.php

<?php
 session_start();

 $sql = "SELECT * FROM tabela WHERE nome LIKE '%Marcos%'";

 $_SESSION['sessao_sql'] = $sql;

 header("Location: mostrar.php");
?>

 

 

mostrar.php

<?php
 session_start();

 echo $_SESSION['sessao_sql'];
?>

 

 

 

Só lembrando, o session_start().. tem que ser antes de qualquer escrita na tela, o mais recomendável, ela tem que estar no primeira linha da sua página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa galera agora sim....valeu ai quem ajudou, deu certo....nao imaginava que por SESSION daria para exportar a consulta, mto obrigado mesmo

 

Quanto a primeira pergunta que fiz de colocar num botao o link, esta era mais simples e já resolvi, fica a resposta pra quem precisar

 

<input type='button' value='Gerar Arquivo excel' onclick="window.location=caminho/excel_clientes_bloqueados.php';"/>

 

valeu

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.