0

Pesquisa de dados em um intervalo de datas pelo MySQL

criado por José Ângelo Lefundes Coelho em 18/09/2009 12:43am
Passo 01 - Criar o banco de dados "pessoas" e a tabela "dados"

Banco de dados: pessoas
tabela: dados

Abaixo segue o script para gerar a tabela dados:
CREATE TABLE IF NOT EXISTS `dados` (
 
`id` int(10) NOT NULL auto_increment,
 
`data` date NOT NULL,
 
`ativo` varchar(1) NOT NULL default '0',
 
`nome` varchar(40) NOT NULL,  
 
`email` varchar(90) NOT NULL,
 
`cpf` varchar(150) NOT NULL,
  PRIMARY KEY  
(`id`)
);

Pronto! agora já temos o banco e a tabela criado, podemos partir para o passo 2 onde iremos criar nosso formulário de pesquisa.

Passo 02 - usando um editor de texto comun como o Bloco de Notas do windows, copie o código a seguir e salve o arquivo como index.php.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" lang="pt-PT" />
<title>Untitled Document</title>
</head>
<!-- a seguir coloquei uma função para formatar os campos das datas //-->
<script language="JavaScript">
<!--
function FormataDados (param, mascara)
{
  vr
= param.value;
  vm
= mascara;
  vr
= stripChars( vr, "/-.,() " );
  vm
= stripChars( vm, "/-.,()" );
  tam
= vr.length;
 
if (tam > vm.length) {
    vr
= vr.substring(0, vm.length);
    tam
= vr.length;
 
}
  temp
= "";
 
for (i = mascara.length; i >= 0; i--) {
   
if (mascara.substring(i, i+1) != " ") {
      temp
+= mascara.substring(i, i+1);
   
}
   
else {
     
if (tam > 0) {
        temp
+= vr.substring(tam-1, tam);
        tam
--;
     
}
     
else {
        temp
+= " ";
     
}
   
}
 
}
  result
= "";
 
for (i = mascara.length; i >= 0; i--) {
    result
+= temp.substring(i, i+1);
 
}
  param
.value = result;
 
return true;
}


function testa (checkOK , checkStr) {
 
var test = true;
 
var decPoints = 0;
 
var allNum = "";
 
for (i = 0;  i < checkStr.length;  i++) {
    ch
= checkStr.charAt(i);
   
for (j = 0;  j < checkOK.length;  j++)
     
if (ch == checkOK.charAt(j))
       
break;
     
if (j == checkOK.length) {
        test
= false;
       
break;
   
}
    allNum
+= ch;
 
}
 
return(test);
}


function VoltaMask(param,paramExemplo,paramTroca) {
 
if (param.value == paramExemplo) {
    param
.value = paramTroca;
 
}
 
else if (param.value == paramTroca) {
    param
.value = paramExemplo;
 
}
 
return true;
}


function stripChars (InString, StripThis)  {
 
OutString="";
 
for (Count=0; Count < InString.length; Count++)  {
   
TempChar=InString.substring (Count, Count+1);
    pertencente
= false;
   
for (i = 0; i < StripThis.length; i++) {
     
if (TempChar == StripThis.substring(i, i+1)) {
        pertencente
= true;
       
break;
     
}
   
}
   
if (!pertencente)
     
OutString=OutString+TempChar;
 
}
 
return (OutString);
}

function Valida(frm) {                                                              
  frm
.submit();
 
return true;
}

self.focus();
//-->
</script>
<body>
<form method="post" action="gerar.php" onsubmit="return Valida(this);">

<label>Nome do relat&oacute;rio<br />
<input name="arquivo" type="text" class="right_contact_textbox" id="arquivo" size="15" style="width:79px;font-size: 11px; font-family: Arial"/>
<br />
<br />
Data de In&iacute;cio
<br />
<input name="datainicio" type="text" class="right_contact_textbox" maxlength="11" id="datainicio" onblur="VoltaMask(this,'  /  /    ','dd/mm/aaaa');" onkeyup="FormataDados(this,  '  /  /    ')" onfocus="VoltaMask(this,'  /  /    ','dd/mm/aaaa');" size="15" value="dd/mm/aaaa" style="width:79px;font-size: 11px; font-family: Arial"/>
<br />
<br />
Data Final
<br />
<input name="datafinal" type="text" class="right_contact_textbox" maxlength="11" id="datafinal"onblur="VoltaMask(this,'  /  /    ','dd/mm/aaaa');" onkeyup="FormataDados(this,  '  /  /    ')" onfocus="VoltaMask(this,'  /  /    ','dd/mm/aaaa');" size="15"  value="dd/mm/aaaa" style="width:79px;font-size: 11px; font-family: Arial" />
</label>
       
</div>
       
<div class="right_contactbox"></div>
       
<div class="right_contactbox"></div>
       
<div class="right_contactbox">
         
<p>
           
<input name="btn_enviar" type="submit" class="button" id="btn_enviar" value="Gerar Relat&oacute;rio" />
         
</p>
       
</div>
     
     
</div> </form>
</body>
</html>

Passo 03 - Aqui vamos criar a página onde vai pegar os dados dentro do intervalo das datas inseridas no formulario da poagina index.php e gerar os resultados encontrados em um arquivo .xls (excel).

Copie o código a seguir e cole no Bloco de Notas salvando o arquivo com o nome de gerar.php:
<?php
$nome_arquivo
= $_POST['arquivo']; // pego nessa variavel o nome que você atribuiu no formulario da pagina index.php para o arquivo a ser gerado .xls - excel
// peguei a variavel datainicio vindo do form e transformei ela pra o formato ingles do SQL Y-m-d
//a variavel de saida final da data em formato SQL é a $datavencinicio
$datainicio
= $_POST['datainicio'];
$datavencinicio
= "$datainicio";
$diavencinicio
= substr("$datavencinicio",0,2);
$mesvencinicio
= substr("$datavencinicio",3,2);
$anovencinicio
= substr("$datavencinicio",6,4);
$datavencinicio
= $anovencinicio."-".$mesvencinicio."-".$diavencinicio;

// peguei a variavel datafinal vindo do form e transformei ela pra o formato ingles do SQL Y-m-d
//a variavel de saida final da data em formato SQL é a $datavencfinal
$datafinal
= $_POST['datafinal'];
$datavencfinal
= "$datafinal";
$diavencfinal
= substr("$datavencfinal",0,2);
$mesvencfinal
= substr("$datavencfinal",3,2);
$anovencfinal
= substr("$datavencfinal",6,4);
$datavencfinal
= $anovencfinal."-".$mesvencfinal."-".$diavencfinal;

//Incluir a classe excelwriter
include
("excelwriter.inc.php");

//Você pode colocar aqui o nome do arquivo que você deseja salvar.
$excel
=new ExcelWriter("".$nome_arquivo."");

if ($excel==false) {
    echo $excel
->error;
}

//Escreve o nome dos campos de uma tabela. Esses vão ser o texto do titulo das colunas no arquivo gerado
$myArr
= array('ID','NOME','EMAIL', 'CPF', 'STATUS');
$excel
->writeLine($myArr);

//Seleciona os campos de uma tabela
$conn
= mysql_connect("localhost", "root", "123") or die ('Não foi possivel conectar ao banco de dados! Erro: ' . mysql_error());
if ($conn) {
    mysql_select_db
("angelo_lefundes", $conn);
}
$consulta
= "select * from dados where data BETWEEN '$datavencinicio' AND '$datavencfinal' order by id";
$resultado
= mysql_query($consulta);
if ($resultado == true) {
   
while($linha = mysql_fetch_array($resultado)){
        $myArr
= array($linha['id'],$linha['nome'],$linha['email'],$linha['cpf'],$linha['ativo']); //campos da tabela dados
        $excel
->writeLine($myArr);
   
}
}

$excel
->close();
echo
"O relatório foi gerado com sucesso com dados<br>cadastrados de ".$datainicio." até ".$datafinal.".<br>
<a href=\""
.$nome_arquivo."\">Clique aqui para fazer o download do arquivo</a>";
?>

Comentários:

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

Novo Comentário:

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