Jump to content
Fórum Script Brasil
  • 0

buscar as duas maiores datas no bd


cunhasales

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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];

Edited by Renato Penna
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...