Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera, mais uma vez venho aqui tentar pedir ajuda aos senhores para a solução de um problema na geração de um relatório em PHP e MySQL, a questão é a seguinte, segue código abaixo:
$qryTbObras = "SELECT * FROM tb_obras";
$resTbObras = mysql_query($qryTbObras, $molde) or die(mysql_error());
<?php
while ($iObras = mysql_fetch_assoc($resTbObras)) {
$qryTbAditivos = "
SELECT tb_obras.id_obra, tb_aditivos.QtdTempo, tb_aditivos.tb_obras_id_obra, tb_obras.NumContrato, tb_obras.DataTermino, tb_obras.orgao, tb_obras.TipoContrato
FROM tb_obras
LEFT JOIN tb_aditivos ON (tb_obras.id_obra = tb_aditivos.tb_obras_id_obra)
WHERE tb_aditivos.tb_obras_id_obra = ". $iObras['id_obra'] ."
ORDER BY tb_aditivos.tb_obras_id_obra
";
$resTbAditivos = mysql_query($qryTbAditivos, $molde) or die(mysql_error());
while($iAditivos = mysql_fetch_assoc($resTbAditivos)) {
if (mysql_num_rows($resTbAditivos) > 0) {
$somaAditivos = $somaAditivos + $iAditivos['QtdTempo'];
$dtTermino = strftime("%d/%m/%Y", strtotime($iObras['DataTermino']));
$dtAtual = date("d/m/Y");
$dtAditivos = somarDatas($dtTermino, $somaAditivos, 0, 0);
$diferencaDatas = diff_dias("$dtAtual","$dtAditivos");
if ($diferencaDatas <= 120) {
?>
<tr>
<td><? echo $iObras['TipoContrato'] ."-". $iAditivos['NumContrato'] ."-". $iAditivos['orgao']; ?></td>
<td><? echo $dtAditivos ?></td>
<td><? echo $diferencaDatas ?></td>
</tr>
<?php
}
}
}
}
?>
Explicando o código que tá muito simples (desculpa pela identação, quando colei veio tudo assim), primeiro seleciono na tabela tb_obras para pegar o id_obra que vai ser utilizado no SQL da tabela tb_aditivos, nessa tabela tem um campo que eu preciso utilizar, que é o QtdTempo, verifico se existe algum aditivo referente àquela obra e faço a soma com uma função somarDatas, logo em seguida vejo se a soma é menor ou igual a 120 e os exibo em uma linha de uma tabela.
O código todo está funcionando normalmente. A grande questão é, toda volta que o while dá ele exibe as linhas, porque ele tá mostrando todos os valores menores que 120, minha pergunta é, como eu faço pra exibir os valores somente uma vez, comparar somente uma vez se aquela id_obra + seus aditivos estão abaixo de 120 e exibi-los apenas uma vez também.
Carregando comentários...