Busca por data, por um certo péríodo

Enviada por Vinicius Santana 
Vinicius Santana
Busca por data, por um certo péríodo
01 de October de 2014 às 08:51PM
Boa tarde galera, tudo bem?

Gostaria de solicitar a ajuda de vocês quanto a um problemão que estou enfrentando, estou postando devido a testar e tentar de várias formas e não conseguir =/

Tenho um sistema que controla saída de uns valezinhos que carregamos na empresa.

Só que queria refinar a busca a um certo cliente e por data. Atualmente já consigo efetuar a busca por cliente. Só que agora queria escolher o cliente e o período de um dia/mes/ano tal até tal dia/mes/ano.

Antes de mais nada, antecipo:
*O campo da DATA esta no formato DATE.

Abaixo cito o código da página de pesquisa e da página que me gera o resultado.



PÁGINA DE PESQUISA "colei as partes somente o conteúdo entre as tags <form> e </form> que é o que de uso, o restante é só formatação.
<form style="margin: 0px; word-spacing: 0px;" name="pesq" action="resultado_pedido_transportadora.php" method="post"><table id="AutoNumber1" style="margin-top: 10px; margin-right: 0pt; margin-left: 4px; border-collapse: collapse;" width="475" align="center" border="0" bordercolor="#111111" cellpadding="0" cellspacing="0" height="200" class="verd_pret_10_txt"><tbody><tr><td width="475" height="40" align="center" valign="middle" class="verd_pret_10_txt" id="AutoNumber1" colspan="2">

<p style="margin-top:15; margin-bottom:15;" align="center"><font face="Verdana"><span style="font-size:12pt;"><b>Pesquisar por Transportadora</b></span></font></p>
</td>
</tr>

<tbody>
<tr>
<td width="150" height="40" align="center" valign="middle" class="verd_pret_10_txt" id="AutoNumber1">
<p class="verd_pret_10_txt_sm" align="left"><font face="Verdana"><span style="font-size:10pt;">Empresa:</span></font></p></td><td width="325" align="center" height="40" valign="middle">

<p align="left"><select name="pesq">
<option value="">- - Selecione - -</option>
<?php
// Conecto no banco.
$conexao = mysql_connect("localhost", "transagu_user", "102030") or die ('Erro na conexão.');
mysql_select_db("transagu_sistema", $conexao);

// Faço o select na tabela.
$sql = "SELECT id, nomefantasia FROM cadastroempresa ORDER BY nomefantasia";
$qry = mysql_query($sql, $conexao);
// faço um laço em que percorro todas linhas da consulta que acabo de fazer.
while ($dados=mysql_fetch_array($qry)) {
// após um submit eu quero que o combo volte a mostrar o que eu selecionei, para isso eu testo se
// a variável do array post alimentado na posição comboDados é igual a variável que está sendo lida
// pela tabela nesse momento.
// Explicação tosca. hehehe Mas acho que dá prá entender.
// Quando selecionamos algo no combo é adicionado uma palavra selected na linha do option e é isso que eu faço.
$selecionado=$dados['id']==$_POST['nomefantasia']?" selected":null;

// Aqui é onde se adiciona cada registro da tabela em um novo item do combo.
// Lembrando que o PHP primeiro é "interpretado", gera-se o HTML e exibe.
// Então o que é feito é que o php está criando os itens no combo.
echo "<option value=\"$dados[nomefantasia]\" $selecionado>$dados[nomefantasia]</option>";

}
?>
</select></p>

</td></tr>

<tr>
<td width="150" height="40" valign="middle">

<p style="margin-top: 0px; margin-bottom: 0px;" align="center">&nbsp;</p></td>
<td width="325" height="40" valign="middle">
<p style="margin-top:0px; margin-bottom:0px;" align="left">&nbsp;</p>
<p style="margin-top:0px; margin-bottom:0px;" align="left"><font face="Verdana" size="2"><span class="verd_pret_10_txt"><input class="todoform" value="Consultar" type="submit"></span></font></p>
<p style="margin-top:0px; margin-bottom:0px;" align="left">&nbsp;</p>

</td>
</tr>
</tbody></table></form>





PÁGINA DE RESULTADOS "existe a citação "case" que é uma outra forma que tentamos de printar a data em formato escrito, peço que não reparem"
<?
$pesq1 = $_POST['pesq'];
//$sql = "SELECT * FROM pedido WHERE empresa LIKE '%%$pesq1%%'";

$sqltotal = "SELECT SUM(quantidade) AS soma, SUM(totalliquido) AS soma2, id, empresa, pedidonumero, datanecessaria, localdeentrega, datavencimento ,transportadora, motorista, placa, quantidade, totalliquido FROM pedido WHERE empresa LIKE '$pesq1'";
//$sqltotal = "SELECT SUM(quantidade) AS soma, SUM(totalliquido) AS soma2, id, empresa, pedidonumero, datanecessaria, localdeentrega, datavencimento ,transportadora, motorista, placa, quantidade, totalliquido FROM pedido WHERE empresa LIKE '%$pesq1%' BETWEEN $dtinicio AND $dtfim";

$sqlmostra = "SELECT SUM(quantidade) AS soma, SUM(totalliquido) AS soma2, id, empresa, pedidonumero, datanecessaria, localdeentrega, datavencimento ,transportadora, motorista, placa, quantidade, totalliquido FROM pedido WHERE empresa LIKE '$pesq1' Group By id, empresa, pedidonumero, datanecessaria, localdeentrega, datavencimento ,transportadora, motorista, placa, quantidade, totalliquido ORDER BY id ASC ";
//$sql = "SELECT id, empresa FROM pedido (SELECT SUM(quantidade) AS soma FROM pedido) WHERE empresa LIKE '%%$pesq1%%'";


$exec = mysql_query($sqltotal) or die(mysql_error());

@$resultado = mysql_query($sqlmostra)
or die ("Não Localizado");
$conta = mysql_num_rows($resultado);

if($conta == 0){
echo "<center><font face='Tahoma' size='2'><br><br>Não existe resultados para esta pesquisa!</font></center><BR>";
}else


$pagina = empty($HTTP_GET_VARS['pagina'])? 1 : $HTTP_GET_VARS['pagina']; // qual página estamos visualizando?
$registros_por_pagina = "500";//AQUI TU COLOCA A QUIANTIDADE DE RESULTADOS POR PAGINA
$pagina_anterior = $pagina - 1;
$pagina_posterior = $pagina + 1;
$registro_inicio = ($registros_por_pagina * $pagina) - $registros_por_pagina;

$total_de_registros = mysql_num_rows($resultado);

if ($total_de_registros <= $registros_por_pagina) {
$total_de_paginas = 1;
}elseif (($total_de_registros % $registros_por_pagina) == 0) {
$total_de_paginas = ($total_de_registros / $registros_por_pagina);
}else{
$total_de_paginas = ($total_de_registros / $registros_por_pagina) + 1;
}


$total_de_paginas = (int) $total_de_paginas;

if (($pagina > $total_de_paginas) || ($pagina < 0))
{
echo 'número da página inválido';
exit;
}


$sqlmostra = $sqlmostra . " LIMIT $registro_inicio, $registros_por_pagina";

$resultado = mysql_query($sqlmostra);
@$total_de_registros_da_pagina = mysql_num_rows($resultado);
if ($total_de_registros_da_pagina == 0)
{
echo "<font face='Tahoma' size=2'><center></center></font>";
exit;
}
else
{



while ($x=mysql_fetch_array($resultado)) {
$dt_x = explode("-",$x['data_insc']);
$ano_pl = $dt_x[0];
$mes_pl = $dt_x[1];
$dia_pl = $dt_x[2];
switch($mes_pl) // acha o mês em português
{
case "01":
$m_prt = "Janeiro";
break;
case "02":
$m_prt = "Fevereiro";
break;
case "03":
$m_prt = "Março";
break;
case "04":
$m_prt = "Abril";
break;
case "05":
$m_prt = "Maio";
break;
case "06":
$m_prt = "Junho";
break;
case "07":
$m_prt = "Julho";
break;
case "08":
$m_prt = "Agosto";
break;
case "09":
$m_prt = "Setembro";
break;
case "10":
$m_prt = "Outubro";
break;
case "11":
$m_prt = "Novembro";
break;
case "12":
$m_prt = "Dezembro";
break;
}
echo"
<table border='0' cellpadding='0' cellspacing='0' width='1000' height='30' align='center'>
<tr>
<td width='25' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[id]</font></span></p>
</td>
<td width='200' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[empresa]</font></span></p>
</td>
<td width='100' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[datanecessaria]</font></span></p>
</td>
<td width='200' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[localdeentrega]</font></span></p>
</td>
<td width='150' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[motorista]</font></span></p>
</td>
<td width='100' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[placa]</font></span></p>
</td>
<td width='100' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[quantidade]</font></span></p>
</td>
<td width='150' height='35%'>
<p align='center'><span style='font-size:8pt;'><font face='Verdana'>$x[totalliquido]</font></span></p>
</td>
</tr>
</table>";
}

$link_de_navegacao = '';
/* link "anterior" */
if($pagina_anterior)
{
$link_de_navegacao .= "<a href='$nomepage&idnome=$idnome&pagina=$pagina_anterior'><font face=Verdana size=1 color=red><</a></font>&nbsp;";
}
for($i = 1; $i <= $total_de_paginas; $i++)
{
if($i != $pagina)
{
/* link individual para as outras páginas */
$link_de_navegacao .= "<a href='$nomepage&idnome=$idnome&pagina=$i'><font face=Verdana size=1 color=red>$i</a></font>";
}else{
$link_de_navegacao .= " <font face=Verdana size=1 color=black><b>[</b></font><font face=Verdana size=1 color=red>$i</font><font face=Verdana size=1 color=black><b>]</b></font> ";
}
}
/* link "proximo" */
if($pagina != $total_de_paginas)
{
$link_de_navegacao .= "&nbsp;<a href='$nomepage&idnome=$idnome&pagina=$pagina_posterior'><font face=Verdana size=1 color=red>></a></font>";
}
}
?>

Desde já muito obrigado pessoal. Paz!
fabio kakimori
Re: Busca por data, por um certo péríodo
02 de October de 2014 às 12:56AM
coloca no seu SELECT dentro do WHERE
campodata BETWEEN '$datainicio' AND '$datafim'

campodata == campo da sua tabela a ser pesquisa a data

$datainicio == vai vir de um input do seu form informando a data inicial de pesquisa
$datafim == vai vir de um input do seu form informando a data final de pesquisa.

Lembrando que a data na tabela esta com campo data ou seja ano-mes-dia e não dia/mes/ano .

quando vem do resultado do BD eu costumo usar o codigo abaixo para formatar a data

< ? php echo strftime("%d/%m/%Y", strtotime($resulta["campodata"])) ;?>


uma dica

$dia = date('d');
$mes = date('m');
$ano = date('Y');
// configuração mes
switch ($mes){
case 1: $mes = "Janeiro"; break;
case 2: $mes = "Fevereiro"; break;
case 3: $mes = "Mar&ccedil;o"; break;
case 4: $mes = "Abril"; break;
case 5: $mes = "Maio"; break;
case 6: $mes = "Junho"; break;
case 7: $mes = "Julho"; break;
case 8: $mes = "Agosto"; break;
case 9: $mes = "Setembro"; break;
case 10: $mes = "Outubro"; break;
case 11: $mes = "Novembro"; break;
case 12: $mes = "Dezembro"; break;
}
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.