I have this simple report generator:
<?php
ob_start();
include "../php/restrict.php";
/******* Conexão com o bando de dados *******/
include "../../Conexao/config.php";
mysqli_select_db($config, $database_config);
mysqli_set_charset($config,"utf8");
/******* Conexão com o bando de dados *******/
$info = "Não há itens cadastrados no momento";
$erro = "Erro ao acessar dados";
$pesq = $_GET['pesq'];
$sql_1 = mysqli_query($config, "SELECT empresa FROM tb_configuracoes") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_1) <= '0'){
echo "
<div class=\"row\">
<div class=\"col-lg-6\">
<div class=\"erro_fix\">$erro</div>
</div>
</div>
";
}else{
while($r_sql_1 = mysqli_fetch_array($sql_1)){
$empresa = $r_sql_1[0];
}
}
$map = array(
'á' => 'a',
'à' => 'a',
'ã' => 'a',
'â' => 'a',
'é' => 'e',
'ê' => 'e',
'í' => 'i',
'ó' => 'o',
'ô' => 'o',
'õ' => 'o',
'ú' => 'u',
'ü' => 'u',
'ç' => 'c',
'Á' => 'A',
'À' => 'A',
'Ã' => 'A',
'Â' => 'A',
'É' => 'E',
'Ê' => 'E',
'Í' => 'I',
'Ó' => 'O',
'Ô' => 'O',
'Õ' => 'O',
'Ú' => 'U',
'Ü' => 'U',
'Ç' => 'C',
'ç' => 'c'
);
$empresa_cor = strtr($empresa, $map);
$empresa_final = str_replace(' ', '', $empresa_cor);
date_default_timezone_set("America/Sao_Paulo");
$data = date("d/m/Y");
$nome_arquivo = "Relatorio_Geral" . "_" . $empresa_final . "_" . $data . ".xls";
$gera_rel = mysqli_query($config, "SELECT SQL_CACHE email_emp, gerente, representante, data_criacao, razao_social, CodCli, categoria_base, cidade, uf, plano, status, id ". $pesq ."") or die(mysqli_error($config));
if(@mysqli_num_rows($gera_rel) <= '0'){
echo "<div class=\"erro\"
style=\" font:24px Arial, Helvetica, sans-serif;
color:#ff6600;
padding:10px 0 0 0;
text-align:center;
\">Relatório de clientes</div><br /><br />";
echo "<div class=\"erro\"
style=\" width:380px;
height:20px;
margin:10px 0 0 0;
padding:6px 0 0 6px;
background:#FFA6A6;
border:1px solid #F00;
font:14px Arial, Helvetica, sans-serif;
\">Não há dados para gerar o relatório</div><br /><br />";
echo "<a class=\"erro\"
style=\" width:31px;
height:12px;
border:0px;
color:#FFF;
font-family:Arial, Helvetica, sans-serif;
padding:1px 0 0 8px;
font-size:9px;
-moz-border-radius:5px;
-webkit-border-radius:5px;
border-radius:5px;
background:#2b2b2b;
float:left;
color:#FFF;
text-decoration:none;
\"href=\"../pages/cadastro_lista_edita.php\">Voltar</a>";
}else{
/*--------------------------------------------
De: Rodrigo Kulb
Viva o Linux
Data 12/08/2008
----------------------------------------------*/
// Trazendo as informações da tabela:
$header .= 'Nome do gerente'. "\t";
$header .= 'Nome do representante'. "\t";
$header .= 'Data cadastro'. "\t";
$header .= 'Nome da empresa'. "\t";
$header .= 'E-mail da empresa'. "\t";
$header .= utf8_decode('Nome do usuário'. "\t");
$header .= 'Categoria'. "\t";
$header .= 'Subcategoria'. "\t";
$header .= 'Subcategoria'. "\t";
$header .= 'Subcategoria'. "\t";
$header .= 'Cidade'. "\t";
$header .= 'Estado'. "\t";
$header .= 'Plano'. "\t";
$header .= 'Valor do plano'. "\t";
$header .= 'Forma de pagamento'. "\t";
$header .= 'Status'. "\t";
while($res_gera_rel = mysqli_fetch_array($gera_rel)){
$email_sel = $res_gera_rel[0];
$id_gerente_sel = $res_gera_rel[1];
$id_representante_sel = $res_gera_rel[2];
$data_criacao_sel = $res_gera_rel[3];
$data_criacao_converte = date("d/m/Y", strtotime($data_criacao_sel));
$razao_social_sel = utf8_decode($res_gera_rel[4]);
$CodCli_sel = $res_gera_rel[5];
$id_categoria_base_sel = $res_gera_rel[6];
$cidade_sel = utf8_decode($res_gera_rel[7]);
$uf_sel = $res_gera_rel[8];
$id_plano_sel = $res_gera_rel[9];
$id_status_sel = $res_gera_rel[10];
$id_empresa_sel = $res_gera_rel[11];
//$valor_plano = "";
$forma_pagamento = "";
$sql_ger = mysqli_query($config, "SELECT nome, sobrenome FROM tb_gerentes WHERE id_ger = '$id_gerente_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_ger) <= '0'){
echo "";
}else{
while($r_sql_ger = mysqli_fetch_array($sql_ger)){
$nome_gerente_sel = $r_sql_ger[0];
$sobrenome_gerente_sel = $r_sql_ger[1];
$gerente_sel = utf8_decode($nome_gerente_sel . " " . $sobrenome_gerente_sel);
}
}
$sql_rep = mysqli_query($config, "SELECT nome, sobrenome FROM tb_representantes WHERE id_rep = '$id_representante_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_rep) <= '0'){
echo "";
}else{
while($r_sql_rep = mysqli_fetch_array($sql_rep)){
$nome_representante_sel = $r_sql_rep[0];
$sobrenome_representante_sel = $r_sql_rep[1];
$representante_sel = utf8_decode($nome_representante_sel . " " . $sobrenome_representante_sel);
}
}
$sql_cli = mysqli_query($config, "SELECT nome, sobrenome FROM tb_clientes WHERE CodCli = '$CodCli_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_cli) <= '0'){
echo "";
}else{
while($r_sql_cli = mysqli_fetch_array($sql_cli)){
$nome_cliente_sel = $r_sql_cli[0];
$sobrenome_cliente_sel = $r_sql_cli[1];
$cliente_sel = utf8_decode($nome_cliente_sel . " " . $sobrenome_cliente_sel);
}
}
$sql_cat = mysqli_query($config, "SELECT categoria FROM tb_categorias WHERE id = '$id_categoria_base_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_cat) <= '0'){
echo "<div class=\"erro\">Erro 3</div>";
}else{
while($r_sql_cat = mysqli_fetch_array($sql_cat)){
$categoria_base_sel = utf8_decode($r_sql_cat[0]);
}
}
$sql_planos = mysqli_query($config, "SELECT descricao, valor FROM tb_planos WHERE plano = '$id_plano_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_planos) <= '0'){
echo "";
}else{
while($r_sql_planos = mysqli_fetch_array($sql_planos)){
$plano_sel = $r_sql_planos[0];
$valor_plano_sel = $r_sql_planos[1];
}
}
$sql_status = mysqli_query($config, "SELECT descricao FROM tb_status WHERE status = '$id_status_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_status) <= '0'){
echo "";
}else{
while($r_sql_status = mysqli_fetch_array($sql_status)){
$status_sel = utf8_decode($r_sql_status[0]);
}
}
$sql_sub_cat = mysqli_query($config, "SELECT sub_categoria FROM tb_empresas_cat WHERE id_emp = '$id_empresa_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_sub_cat) <= '0'){
echo "";
}else{
while($r_sql_sub_cat = mysqli_fetch_array($sql_sub_cat)){
$sub_cat_sel = $r_sql_sub_cat[0];
$array_sub_cat_sel = array($sub_cat_sel);
}
}
$sql_sel_f_pag = mysqli_query($config, "SELECT paymentMethod FROM tb_pagamentos_assinaturas WHERE codEmpresa = '$id_empresa_sel'") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_sel_f_pag) <= '0'){
$forma = "";
}else{
while($r_sql_sel_f_pag = mysqli_fetch_array($sql_sel_f_pag)){
$forma_pagamento_sel = $r_sql_sel_f_pag[0];
switch($forma_pagamento_sel){
case 'CREDIT_CARD':
$forma = utf8_decode('Cartão de crédito');
break;
case 'BOLETO':
$forma = utf8_decode('Boleto');
break;
}
}
}
// Insere a linha
$line = '';
$value = '"' ."$gerente_sel". '"' . "\t";
$value .= '"' ."$representante_sel". '"' . "\t";
if($data_criacao_sel == "0000-00-00"){
$value .= '"' ."". '"' . "\t";
}else{
$value .= '"' ."$data_criacao_converte". '"' . "\t";
}
$value .= '"' ."$razao_social_sel". '"' . "\t";
$value .= '"' ."$email_sel". '"' . "\t";
$value .= '"' ."$cliente_sel". '"' . "\t";
$value .= '"' ."$categoria_base_sel". '"' . "\t";
if(!empty($array_sub_cat_sel[0])){
$value .= '"' .utf8_decode($array_sub_cat_sel[0]). '"' . "\t";
}else{
$value .= '"' ."". '"' . "\t";
}
if(!empty($array_sub_cat_sel[1])){
$value .= '"' .utf8_decode($array_sub_cat_sel[1]). '"' . "\t";
}else{
$value .= '"' ."". '"' . "\t";
}
if(!empty($array_sub_cat_sel[2])){
$value .= '"' .utf8_decode($array_sub_cat_sel[2]). '"' . "\t";
}else{
$value .= '"' ."". '"' . "\t";
}
$value .= '"' ."$cidade_sel". '"' . "\t";
$value .= '"' ."$uf_sel". '"' . "\t";
$value .= '"' ."$plano_sel". '"' . "\t";
$value .= '"' ."$valor_plano_sel". '"' . "\t";
$value .= '"' ."$forma". '"' . "\t";
$value .= '"' ."$status_sel". '"' . "\t";
$line .= strtr($value,"","") ;
// O trim retira os espaços encontrados no começo e no final de cada linha encontrada.
$dados .= trim($line)."\n";
// Substituindo todas as quebras de linha ao final de cada registro, que por padrão seria \r por uma valor em branco, para que a formatao fique legível
$dados = str_replace("\r","",$dados);
// Caso não encontre nenhum registro, mostra esta mensagem.
if ($dados== "") {
$dados = "\n Nenhum registro encontrado!\n";
}
}
// Cabeçalhos e instrçueõs para geração e download do arquivo:
header("Content-type: application/x-msexcel");
// Este cabeçalho abaixo, indica que o arquivo dever ser gerado para download.
header("Content-Disposition: attachment; filename=$nome_arquivo");
// No cache, ou seja, não guarda cache, pois é gerado dinamicamente
header("Pragma: no-cache");
// Não expira
header("Expires: 0");
// E aqui geramos o arquivo com os dados mencionados acima!
print "$header\n$dados";
}
mysqli_close($config);
?>
To run it, I'm always on another page. For example, I'm in query_clients.php and, when I click the report button, I go to the report.php.
The problem is that after generating the report and downloading, the query_clients.php page gets an empty hole.
Would you like to go back, in a "normal" way?