Ir para conteúdo
Fórum Script Brasil
  • 0

buscar as duas maiores datas no bd


cunhasales

Pergunta

Boa dia pessoal,

Estou com o seguinte problema:

Tenho gravado no BD (mysql) até 3 datas para cada cpf e estou precisando mostrar em uma table apenas as duas maiores data para cada cpf, segue código:

<?php

$ano = $_POST['ano']; // pego do form

$mes = $_POST['mes']; //pego do form

?>

<table>

<?php

//CONSULTO TODOS NO MES E ANO SOLICITADO PELO USUARIO

$consulta = mysql_query ("SELECT * FROM salao WHERE MONTH(datasalao)=$mes' AND YEAR(datasalao)='$ano' ") or die(mysql_error());

while ($result=mysql_fetch_array($consulta)) {

$cpf = $result['cpfsalao];

$data = $result['datasalao'];

//FAÇO CONSULTA PELO CPF ACIMA

$consulta1= mysql_query("SELECT * FROM salao WHERE MONTH(datasalao)=$mes' AND YEAR(datasalao)='$ano' AND cpfsalao='$cpf' ") or die(mysql_error());

$qtdcpf = mysql_num_rows($consulta1); //TRAZ RESULTADO PESQUISA ACIMA

if ($qtdcpf >= 2){

//FAÇO CONSULTA P BUSCAR DATA > QUE A DATA DO LAÇO

$consulta2= mysql_query("SELECT * FROM salao WHERE datasalao>'$data' AND MONTH(datasalao)='$mes' AND YEAR(datasalao)='$ano' cpfsalao='$cpf' ") or die(mysql_error());

while ($resultado=mysql_fetch_array($consulta2)) {

?>

<tr height="25">

<td height="25" width="42%" align="center"><?php echo $resultado['nomesalao]; ?></td>

<td height="25" width="10%" align="center"><?php echo $resultado['aptsalao']; ?></td>

<td height=25" width="17%" align="center"><?php echo $resultado['datasalao]; ?></td>

<td height="25" width="15%" align="center" valign="middle">

<a href="VisualizarAutorizacao.php?id=<?php echo $resultado['id']; ?>">

<img src="../../Imagens/detalhe.png" title="Visualizar Detalhes" border="0"/>

</a>

</td>

</tr>

<?php

}

}

}

?>

</table>

OBS: COMO FAÇO PARA PEGAR A SEGUNDA MAIOR DATA QUANDO HOUVER 3 DATAS PARA O MESMO CPF ?

O PROBLEMA É EXATAMENTE QUANDO TENHO 3 DATAS PARA O MESMO CPF

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

bem se for exatamente 3 você pode da o select normalmente e pode por um LIMIT 1,1 assim ira mostrar o segundo registro do select ou seja no caso de 3 o do meio já que voce já ordenou por data... a questão muda quando se tem mais registros

mas tu pode por exemplo no select tu pode por um BETWEEN que seria entre e dar as datas

ou seja

selecione o registro que esta entre a data 1 e a data 2 e o cpf seja = xxx

agora sem você não tem a data já fica diferente o select tem que ser normal e simplesmente fazer a questao do limit mas tem aquele detalhe que eu disse.

você pode atribuir também uma conta matematica por exemplo

CPF - 10 ttiver 5 registro mas somente se for registro você pode pegar

o num rows que vai retorna 5 dividir por 2 para chegar a metade vai dar 2,5 usar o ceil para arredondar ficara 2 e colocar + 1 para ir para o 3 assim o ponteiro de reigstro é 3 ou seja fico 2 registro pra frente e 2 para tras e voce esta justo no do meio então pega o ultimo ID-PONTEIRO estera justo no registro que quer...

beem é algumas ideias se você pode detalhar mais como funciona talvez possa montar algo mais pratico... rsrs

Link para o comentário
Compartilhar em outros sites

  • 0
$sql = mysql_query(SELECT datasalao FROM salao WHERE cpfsalao = '".$cpf."'");
$linhas = mysql_num_rows($sql);
$datasalao = array();
for($i=0;$i<$linhas;$i++)
{
    $datasalao[$i] = mysql_result($sql,$i,"datasalao");
    $datasalao[$i] = substr($datasalao[$i],0,4).substr($datasalao[$i],5,2).substr($datasalao[$i],8,2);
}
$datasalao = sort($datasalao);
echo $datasalao[2]."<br />";
echo $datasalao[1];

Editado por Renato Penna
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Renato pela ajuda, no entando já resolvi:

Incluir mais um campo (qtd) na tabela salao e a medida que for inserindo os dados para aquele mesmo cpf vou adicionando ++ e pronto, fiz

uma consulta para qtd > 1.

Porém surgiu outro probleminha:

Estou tentando recuperar os inputs do while em uma função no JavaScrip, para envia-los a uma popup, no entanto quando abro a popup estão indefinidos, será se poderia dá um help, segue código:

<form name=autorizaadmin" action="" method="post">

<table border="1" bordercolor="#006600" cellpadding="0" width="570">

<?php

$qtd = 1;

$consulta = mysql_query ("SELECT * FROM salao WHERE MONTH(datasalao)='$mes' AND YEAR(datasalao)='$ano'

AND qtdsalao>'$qtd' ORDER BY datasalao asc" ) or die(mysql_error());

$qtdcpf = mysql_num_rows($consulta); //traz o resultado da pesquisa acima

while ($resultado=mysql_fetch_array($consulta)) {

$data = $resultado['datasalao];

$nome = $resultado['nomesalao'];

$cpf = $resultado['cpfsalao'];

$apt = $resultado['aptsalao'];

$datareg = $resultado['datareg'];

?>

//CAMPOS QUE NECESSITO RECUPERAR NA POPUP

<input type=hidden" name="cpf" value="<?php echo "$cpf" ?>" />

<input type="hidden" name="nome" value="<?php echo "$nome" ?>" />

<input type="hidden" name="data" value="<?php echo "$databd" ?>" />

<input type="hidden" name="apt" value="<?php echo "$apt" ?>" />

<input type="hidden" name="datareg" value="<?php echo "$datareg" ?>" />

<?php

$dt = explode("-", $data);

$anobanco = $dt[0]; $mesbanco = $dt[1]; $diabanco = $dt[2];

$databd = $dt[2] . "/" . $dt[1] . "/" . $dt[0]; //data vindo do banco

?>

<tr height="25" bgcolor="<?php echo $cor2; ?>">

<td height="25" width="40%" align="center"><?php echo $resultado['nomesalao]; ?></td>

<td height="25" width="10%" align="center"><?php echo $resultado['aptsalao']; ?></td>

<td height=25" width="18%" align="center"><?php echo $databd ?></td>

<td width="10%" align="center"><?php echo $resultado['qtdsalao]; ?>ª </td>

<td height="25" width="22%" align="center" valign="middle">

<a href="java script:popupautoriza1();"> //CHAMO A FUNCAO AQUI

<img src="../../Imagens/Autorizacao.png" title="Visualizar" border="0"/>

</a>

</td>

</tr>

<?php

}

?>

</table>

</form>

//FUNÇAO JAVASCRIP

function popupautoriza1(URL) {

var width = 615;

var height = 400;

var left = 50;

var top = 150;

var data = document.autorizaadmin.data.value;

var nome = document.autorizaadmin.nome.value;

var cpf = document.autorizaadmin.cpf.value;

var apt = document.autorizaadmin.apt.value;

var datareg = document.autorizaadmin.datareg.value;

URL = "TermoAutoriza1.php?data="+data+ "&nome="+nome+ "&apt="+apt+ "&datareg="+datareg+ "&cpf="+cpf;

window.open(URL,'janela', 'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=yes, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no');

}

Obrigado JaguA pela ajuda, esse probleminha já conseguir resolver, att.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...