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 (~14 anos atrás)

Novo Comentário:

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