Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SHWE12

[Resolvido] Comparação de Datas

Recommended Posts

Boa noite Galera.

Estou com uma dificuldade. Tenho um sistema que gera boletos. Digamos que o boleto de 05/02/2009 está vencido, hoje é 20/02/2009 preciso fazer essa comparação se a data vencida é menor que a data atual ele vai me mostrar que tem boletos em aberto. so que nao estou conseguindo essa resposta.

<?
	$ra = $_SESSION['ra'];
	$busca2= "SELECT *, DATE_FORMAT(data_pagamento, '%d/%m/%Y') AS data_br FROM financeiro WHERE ra='$ra' ORDER BY data_br desc";
	$retorno2 = mysql_query($busca2,$conexao);
	while($campos2=mysql_fetch_assoc($retorno2))
	{
	
	$status = $campos2['status'];
	
	$data_pag = $campos2['data_br'];
	
	$data_atual = date("d/m/Y");
	
	
	if(($data_pag < $data_atual)&&($status=='Aberto'))
	{
	?>
	<div align="center" class="texto_manager">
	A Parcela de <? echo $campos2['data_br']; ?> consta atrasada em nosso sistema.</div>
	<?
	}
	}
	?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os resultados foram esses

 

05/04/2009 20/02/2009

05/03/2009 20/02/2009

05/02/2009 20/02/2009

05/01/2009 20/02/2009

 

eu pensei em transformar tudo em inteiro, mas nao sei fazer isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao quero fazer aparecer soh os boletos vencidos, vao aparecer todos os boletos um lista de 12 boletos, um por ano, os que estiverem vencidos vai aparecer uma mensagem nele que esta vencido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK !

 

Tenta assim então

 

<?
	$ra = $_SESSION['ra'];
	$busca2= "SELECT *, DATE_FORMAT(data_pagamento, '%d/%m/%Y') AS data_br FROM financeiro WHERE ra='$ra' ORDER BY data_br desc";
	$retorno2 = mysql_query($busca2,$conexao);
	while($campos2=mysql_fetch_assoc($retorno2))
	{
	
	$status = $campos2['status'];
	
	$data_pag = $campos2['data_br'];
	$data_paga=strtotime($data_pag );
	$data_atual = date("d/m/Y");
	$dataHoje = strtotime("$data_atual");
	
	
	if(($data_paga < $dataHoje)&&($status=='Aberto'))
	{
	?>
	<div align="center" class="texto_manager">
	A Parcela de <? echo $campos2['data_br']; ?> consta atrasada em nosso sistema.</div>
	<?
	}
	}
	?>

Xi!!! Acho que falei besteira!!! Num testei to até sem php nesta máquina...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Havia alguns erros no código sim dei uma corrigida....

Testa aí..

<?
	$ra = $_SESSION['ra'];
	$busca2= "SELECT *, DATE_FORMAT(data_pagamento, '%d/%m/%Y') AS data_br FROM financeiro WHERE ra='$ra' ORDER BY data_br desc";
	$retorno2 = mysql_query($busca2,$conexao);
	while($campos2=mysql_fetch_assoc($retorno2))
	{
	
	$status = $campos2['status'];
	
	$data_pag = $campos2['data_br'];
	$data_paga=strtotime($data_pag);
	$data_atual = date('d/m/Y');
	$dataHoje = strtotime('$data_atual');
	
	
	if(($data_paga < $dataHoje)&&($status=='Aberto'))
	{
	?>
	<div align="center" class="texto_manager">
	A Parcela de <? echo $campos2['data_br']; ?> consta atrasada em nosso sistema.</div>
	<?
	}
	}
	?>
Podes pesquisar nest post

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja pensei sim, mas para mim fica complicado, imagine ter q criar um valor a mais de Atrasado vamos supor sendo que eu ja tenho Pago e Aberto, agora voce imagine trabalhar isso em um banco de dados com mais 2.000 alunos. Creio que dessa forma que pensei fica mais rápido também, se eu conseguisse transformar o valor tipo 12/02/2009 para 12022009 ai eu conseguiria fazer essa comparação tranquilamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho você não conseguir comparar direto os valores o.o mas como você está guardando no banco de dados ? como VARCHAR, a data ? o.o

 

De qualquer forma.... Da de você usar explode e comparar dia, mês e ano separadamente, ou mesmo retirar os "/" e comparar as datas como você falou ... 02052009 por exemplo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Uma sugestão:

<?php
$busca	= mysql_query("select ra, status, date_format(data_pagamento, '%d/%m/%Y') as data_br from financeiro where ra='$_SESSION[ra]'");

while($x = mysql_fetch_array($busca))
{
	$data_atual	= date("d/m/Y");

	if($x['data_br'] < $data_atual and $x['status'] == 'Aberto')
	{
		echo "<div align='center' class='texto_manager'>A Parcela de $x[data_br] consta atrasada em nosso sistema.</div>";
	}
}
?>

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Kimura, ainda nao deu certo pois ele nao me dá somente as datas menores que a do pagamento e sim as outras que vao vencer também ele acusa como nao pagas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Fiz um script rápido aqui que funciona, adapte ao seu modo e teste.

 

<?php

$Qry	= mysql_query("select date_format(data, '%Y-%m-%d') as data from teste");

while($x = mysql_fetch_array($Qry))
{
	if($x['data'] < date('Y-m-d'))
	{
		echo 'A parcela do dia <b>'.implode('-', array_reverse(explode('-',$x['data']))).'</b> consta como atrasada no nosso sistema.<hr />';
	}
	else
	{
		echo 'A parcela do dia <b>'.implode('-', array_reverse(explode('-',$x['data']))).'</b> está ok no nosso sistema.<br />';
	}
}

?>

Sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não quiser fazer uma nova query no banco, converta ambas as datas para segundos e aí você pode só checar se um valor é maior que o outro.

E.g.:

$date = "2009-02-05";
$ano = substr($date, 0, 4);
$mes = substr($date, 5, 2);
$dia = substr($date, 8, 2);
$bissex = floor($ano/4);
$ano -= $bissex;
$oddm = floor($mes/2);
$mes -= $oddm;

$t = $bissex*366*24*60*60;
$t += $ano*365*24*60*60;
$t += $oddm*31*24*60*60;
$t += $mes*30*24*60*60;
$t += $dia*24*60*60;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Fiz um script rápido aqui que funciona, adapte ao seu modo e teste.

 

<?php

$Qry	= mysql_query("select date_format(data, '%Y-%m-%d') as data from teste");

while($x = mysql_fetch_array($Qry))
{
	if($x['data'] < date('Y-m-d'))
	{
		echo 'A parcela do dia <b>'.implode('-', array_reverse(explode('-',$x['data']))).'</b> consta como atrasada no nosso sistema.<hr />';
	}
	else
	{
		echo 'A parcela do dia <b>'.implode('-', array_reverse(explode('-',$x['data']))).'</b> está ok no nosso sistema.<br />';
	}
}

?>

Sucesso!

 

OPA AGORA DEU CERTO VLW.. ABRAÇO

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.