Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olha só o meu código:
//aqui pego a data de pagamento do aluno
$dt_pagamento = $array["DATE_FORMAT(dat_pagamento, '%d/%m/%y')"];
//depois pego só o dia e o mes
$rest_dia = substr($dt_pagamento, 0,2);
$rest_mes = substr($dt_pagamento, 3,2);
//aqui pego o dia atual
$dia = date(d);
//aqui pego o mes atual e diminuo de 1
$mes = date(m);
$mes_menos_um = (($mes) - 1);
//agora é que eu me ferro :: eu faço se o mes atual - 1 for meno ou igual ao mes de pagto do cara en~tao coloco como pago
if (($mes_menos_um <= $rest_mes)) {
$pagamento="Pago";
}else{
$pagamento="Não Pago";
}
o problema é o dias. não sei como trata-los. o que esta acontecendo é que , por exemplo, hoje é 31/10 e o correto é que quem pagou ate 31/09 aparecesse como pago. neste caso acima o cara paga, malha 30 dias e ainda ganha mais 30 pq o sistema não acusa que ele não pagou por não trato os dias.
alguem pode me ajudar?
>
olha só o meu código:
//aqui pego a data de pagamento do aluno
$dt_pagamento = $array["DATE_FORMAT(dat_pagamento, '%d/%m/%y')"];
//depois pego só o dia e o mes
$rest_dia = substr($dt_pagamento, 0,2);
$rest_mes = substr($dt_pagamento, 3,2);
//aqui pego o dia atual
$dia = date(d);
//aqui pego o mes atual e diminuo de 1
$mes = date(m);
$mes_menos_um = (($mes) - 1);
//agora é que eu me ferro :: eu faço se o mes atual - 1 for meno ou igual ao mes de pagto do cara en~tao coloco como pago
if (($mes_menos_um <= $rest_mes)) {
$pagamento="Pago";
}else{
$pagamento="Não Pago";
}
o problema é o dias. não sei como trata-los. o que esta acontecendo é que , por exemplo, hoje é 31/10 e o correto é que quem pagou ate 31/09 aparecesse como pago. neste caso acima o cara paga, malha 30 dias e ainda ganha mais 30 pq o sistema não acusa que ele não pagou por não trato os dias.
alguem pode me ajudar?
Cara, eu entendi o q você precisa... Você precisa diminuir 30 dias da data de pagamento do aluno, não eh? Dah uma pesquisada a respeito de diferença de datas com a função mktime() ...
esse tópico aqui deve te ajudar:
Acho que você pode usar desta forma
if (($mes <= $rest_mes) && ($dia <= $rest_dia)) {
$pagamento="Pago";
}else{
$pagamento="Não Pago";
}
e ainda da pra incrementar fazendo o calculo de qts dias esta em atraso...
espero ter ajudado..
>
>
olha só o meu código:
//aqui pego a data de pagamento do aluno
$dt_pagamento = $array["DATE_FORMAT(dat_pagamento, '%d/%m/%y')"];
//depois pego só o dia e o mes
$rest_dia = substr($dt_pagamento, 0,2);
$rest_mes = substr($dt_pagamento, 3,2);
//aqui pego o dia atual
$dia = date(d);
//aqui pego o mes atual e diminuo de 1
$mes = date(m);
$mes_menos_um = (($mes) - 1);
//agora é que eu me ferro :: eu faço se o mes atual - 1 for meno ou igual ao mes de pagto do cara en~tao coloco como pago
if (($mes_menos_um <= $rest_mes)) {
$pagamento="Pago";
}else{
$pagamento="Não Pago";
}
o problema é o dias. não sei como trata-los. o que esta acontecendo é que , por exemplo, hoje é 31/10 e o correto é que quem pagou ate 31/09 aparecesse como pago. neste caso acima o cara paga, malha 30 dias e ainda ganha mais 30 pq o sistema não acusa que ele não pagou por não trato os dias.
alguem pode me ajudar?
Cara, eu entendi o q você precisa... Você precisa diminuir 30 dias da data de pagamento do aluno, não eh? Dah uma pesquisada a respeito de diferença de datas com a função mktime() ...
esse tópico aqui deve te ajudar:
http://forum.imasters.com.br/index.php?showtopic=145789
não mano, eu preciso disso ó:
tenho um monte de alunos cadastrados no meu sistema.
toda vez que um paga eu dou baixa e fica assim...
digamos que o cara pagou dia 30/09/07
ele pode utilizar os meus serviços até hoje porque ele pagou o mês passado no dia 30 sacou.
então, se hoje fosse 30/10 ele estaria com acesso.
ja que hoje não é , hoje é 31/10 teria que aparecer como não pago sacou, tipo dizendo que ele não pagou, que o mes venceu.
outro exemplo:
o cara pagou dia 13/09/07 dai venceu dia 13/10/07 NÃO PAGO PQ HOJE É 31/10/07 E JA PASSOU + DE 30 DIAS
o cara pagou dia 13/10/07 dai vence dia 13/11/07 PAGO PQ HOJE É 31/10/07 E NÃO PASSOU + DE 30 DIAS
E POR AI VAI...
ALGUEM AINDA PODE ME AJUDAR
Primeiro vamos simplicar as coisas pra poder entender:
1) de onde ta vindo essa data de pagamento de um form ou de uma database?
se for de uma database voce poderia fazer select date_format(dat_pagamento,'Ymd') as dataPgto fom nomedatabela where ....
A data de pagamento já vem no formato anomesdia que é o mais correto.
se for de um form voce poderia fazer:
dataPgto=implode('', array_reverse(explode("/", $_POST['dat_pagamento'])));
Isso considerando que a data venha no formato DD/MM/AAAA, isso teria que travar na entrada ou no server limpando os caracteres divisores tipo:
$dataPgto =ereg_replace("[' '-./ \t]",'',$_POST['dat_pagamento']); a data ficaria so DDMMAAAA
ai é so inverter o ano com o dia.
para aplicar um offset na data:
$pgto='20061010';
$hoje=date('Ymd');
$diff=$hoje-$pgto;
echo "pgto=$pgto hoje=$hoje diff=$diff<br>validade até ";
echo date('Y-m-d', time() + ((365-$diff) * 86400));
Espero que isso ajude de alguma forma.
Eu uso para calculo de vencimento de boletos dessa forma:
$vcto=('d/m/d', time() + ($offset * 86400)); sendo que o offset é quantos dias após a emissão do boleto.
Se aplicar um $offset negativo, a data passa a ser a data de emissão menos o offset, isso já considerando meses de 28 ou 28. 30 ou 31 dias.
bom ja te dei uma dica em outro tópico como você resolver este problema, a a solução ideal seria você inserir mas um campo em sua tabale que deria a data de vencimento, pois desta forma mesmo que você consiga solucionar vai haver problemas pois você considera que todos seus alunos vão pagar na data exata de vencimento, enquanto tem uns que pagam antecipados e outros pagam atrasado.
mas pra este cauculo você pode fazer assim:
<? $dt_pagamento = "02/11/2007";
//adicionando 30 dias a data de pagamento
$data = time($dt_pagamento)+ (30 24 60 * 60);
//enquanto a dat_pagamento + 30 dias forma maior que a data atual será considerado como pago
if (strtotime(date("d/m/Y",$data)) >= strtotime(date("d/m/Y"))){
echo "pago";
} echo "não pago";
}
?>Olá.
Poderia fazer a verificação das datas em TimeStamp, com isso você verifica a data do pagamento com a data do vencimento
se o timestamp do pagamento for maior que o do vencimento, o pagamento foi feito com atraso, caso contrario, pagamento em dia.
Pra ser sincero, não entendi muito bem o que está acontecendo. :huh: