Pesquisa de dados em um intervalo de datas pelo MySQL
Passo 04 - Agora irems usar uma função que achei na internet. Por favor mantenha os créditos do desenvolvedor. Apenas copie e crie o arquivo com o nome de excelwriter.ini.php
PRONTO! esta pronto aqui nosso sistema de pesquisa com geração dos resultados em um relatorio criado em formato .xls (excel).
Entendimento dos campos da tabela:
Como você pode notar, na tabela "dados" existe um campo "ativo", criei ele com a finalidade de deixar com que você possa controlar os registros em status de ativo, caso, o valor deste seja 1 --> ou deixar o registro inativo caso o valor seja 0. Para tanto o tipo desse campo é INT de tamanho 1.
Ex.: de uso --> suponhamos que na tabela dados você tenha os seguintes registros:
id: 1
data: 1984-11-03
ativo: 1
nome: Angelo Lefundes
email: comercial@angelolefundes.com.br
cpf: 03210595224
e
id: 3
data: 1984-11-13
ativo: 0
nome: Geliane Souza
email: gege@hotmail.com
cpf: 12345678910
entendendo o resto...
temos 1 registro ATIVO com valor = 1 E 1 registro INATIVO com valor = 0
caso você queira que nos relatorios da pesquisa imprima somente os registros ATIVOS -->> você vai ter que adionar na query $consulta da pagina gera.php um where ativo = '1'
Ficando assim:
Lembrando que deixei como padrão o valor "0" do campo "ativo" na tabela.
"0" -> inativo, ou seja -> todos os registros cadastrados inicialmente vão estar inativos. Ai você vai criar um admin do sistema onde através de um radio button você possa escolher o status do registro, e poder altera-lo para "ativo" ou "inativo" -> exibir ou não exibir: entendeu?
Uma observação importante:
N página index.php, onde tem o formulário, no campo onde vai digitar o nome do arquivo a ser gerado do relatório terá q ser escrito no formato: nome_do_seu_arquivo.xls -> não esquecer de colocar .xls!!!
ex.: relatorio_10-01-2009.xls
Dúvidas envie um comentario abaixo.
<?php
/*
###############################################
#### ####
#### Author : Harish Chauhan ####
#### Date : 31 Dec,2004 ####
#### Updated: ####
#### ####
###############################################
*/
/*
* Class is used for save the data into microsoft excel format.
* It takes data into array or you can write data column vise.
*/
Class ExcelWriter{
var $fp=null;
var $error;
var $state="CLOSED";
var $newRow=false;
/*
* @Params : $file : file name of excel file to be created.
* @Return : On Success Valid File Pointer to file
* On Failure return false
*/
function ExcelWriter($file="",$bsc="CELLPAR"){
return $this->open($file);
}
/*
* @Params : $file : file name of excel file to be created.
* if you are using file name with directory i.e. test/myFile.xls
* then the directory must be existed on the system and have permissioned properly
* to write the file.
* @Return : On Success Valid File Pointer to file
* On Failure return false
*/
function open($file){
if($this->state!="CLOSED"){
$this->error="Error : Another file is opend .Close it to save the file";
return false;
}
if(!empty($file)){
$this->fp=@fopen($file,"w+");
}else{
$this->error="Usage : New ExcelWriter('fileName')";
return false;
}
if($this->fp==false){
$this->error="Error: Unable to open/create File.You may not have permmsion to write the file.";
return false;
}
$this->state="OPENED";
fwrite($this->fp,$this->GetHeader());
return $this->fp;
}
function close(){
if($this->state!="OPENED"){
$this->error="Error : Please open the file.";
return false;
}
if($this->newRow){
fwrite($this->fp,"</tr>");
$this->newRow=false;
}
fwrite($this->fp,$this->GetFooter());
fclose($this->fp);
$this->state="CLOSED";
return;
}
/* @Params : Void
* @return : Void
* This function write the header of Excel file.
*/
function GetHeader(){
$header = <<<EOH
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=ProgId content=Excel.Sheet>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:LastAuthor>Sriram</o:LastAuthor>
<o:LastSaved>2005-01-02T07:46:23Z</o:LastSaved>
<o:Version>10.2625</o:Version>
</o:DocumentProperties>
<o:OfficeDocumentSettings>
<o:DownloadComponents/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
@page
{margin:1.0in .75in 1.0in .75in;
mso-header-margin:.5in;
mso-footer-margin:.5in;}
tr
{mso-height-source:auto;}
col
{mso-width-source:auto;}
br
{mso-data-placement:same-cell;}
.style0
{mso-number-format:General;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
border:none;
mso-protection:locked visible;
mso-style-name:Normal;
mso-style-id:0;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
mso-number-format:General;
text-align:general;
vertical-align:bottom;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
.xl24
{mso-style-parent:style0;
white-space:normal;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>RELATORIO</x:Name>
<x:WorksheetOptions>
<x:Selected/>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
<x:WindowHeight>10005</x:WindowHeight>
<x:WindowWidth>10005</x:WindowWidth>
<x:WindowTopX>120</x:WindowTopX>
<x:WindowTopY>135</x:WindowTopY>
<x:ProtectStructure>False</x:ProtectStructure>
<x:ProtectWindows>False</x:ProtectWindows>
</x:ExcelWorkbook>
</xml><![endif]-->
</head>
<body link=blue vlink=purple>
<table x:str border=0 cellpadding=0 cellspacing=0 style='border-collapse: collapse;table-layout:fixed;'>
EOH;
return $header;
}
function GetFooter(){
return "</table></body></html>";
}
/*
* @Params : $line_arr: An valid array
* @Return : Void
*/
function writeLine($line_arr){
if($this->state!="OPENED"){
$this->error="Error : Please open the file.";
return false;
}
if(!is_array($line_arr)){
$this->error="Error : Argument is not valid. Supply an valid Array.";
return false;
}
fwrite($this->fp,"<tr>");
foreach($line_arr as $col)
fwrite($this->fp,"<td class=xl24 width=64 >$col</td>");
fwrite($this->fp,"</tr>");
}
/*
* @Params : Void
* @Return : Void
*/
function writeRow(){
if($this->state!="OPENED"){
$this->error="Error : Please open the file.";
return false;
}
if($this->newRow==false){
fwrite($this->fp,"<tr>");
}else{
fwrite($this->fp,"</tr><tr>");
$this->newRow=true;
}
}
/*
* @Params : $value : Coloumn Value
* @Return : Void
*/
function writeCol($value){
if($this->state!="OPENED"){
$this->error="Error : Please open the file.";
return false;
}
fwrite($this->fp,"<td class=xl24 width=64 >$value</td>");
}
}
?>
PRONTO! esta pronto aqui nosso sistema de pesquisa com geração dos resultados em um relatorio criado em formato .xls (excel).
Entendimento dos campos da tabela:
Como você pode notar, na tabela "dados" existe um campo "ativo", criei ele com a finalidade de deixar com que você possa controlar os registros em status de ativo, caso, o valor deste seja 1 --> ou deixar o registro inativo caso o valor seja 0. Para tanto o tipo desse campo é INT de tamanho 1.
Ex.: de uso --> suponhamos que na tabela dados você tenha os seguintes registros:
id: 1
data: 1984-11-03
ativo: 1
nome: Angelo Lefundes
email: comercial@angelolefundes.com.br
cpf: 03210595224
e
id: 3
data: 1984-11-13
ativo: 0
nome: Geliane Souza
email: gege@hotmail.com
cpf: 12345678910
entendendo o resto...
temos 1 registro ATIVO com valor = 1 E 1 registro INATIVO com valor = 0
caso você queira que nos relatorios da pesquisa imprima somente os registros ATIVOS -->> você vai ter que adionar na query $consulta da pagina gera.php um where ativo = '1'
Ficando assim:
<?php
$consulta = "select * from dados where ativo = '1' AND data BETWEEN '$datavencinicio' AND '$datavencfinal' order by id";
?>
Lembrando que deixei como padrão o valor "0" do campo "ativo" na tabela.
"0" -> inativo, ou seja -> todos os registros cadastrados inicialmente vão estar inativos. Ai você vai criar um admin do sistema onde através de um radio button você possa escolher o status do registro, e poder altera-lo para "ativo" ou "inativo" -> exibir ou não exibir: entendeu?
Uma observação importante:
N página index.php, onde tem o formulário, no campo onde vai digitar o nome do arquivo a ser gerado do relatório terá q ser escrito no formato: nome_do_seu_arquivo.xls -> não esquecer de colocar .xls!!!
ex.: relatorio_10-01-2009.xls
Dúvidas envie um comentario abaixo.
Páginas:
1
2