0

Pesquisa de dados em um intervalo de datas pelo MySQL

criado por José Ângelo Lefundes Coelho em 18/09/2009 12:43am
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
<?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.

Comentários:

Mostrando 1 - 1 de 1 comentários
Muito interessante
21/10/2009 4:38pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)