E AI GALERA BELEZA TO COM UMA DOR DE CABEÇA EM UM CÓDIGO QUE NÃO CONSIGO RESOLVER DE MANEIRA NENHUMA, GOSTARIA DA AJUDA DE VOCÊS, É O SEGUINTE, ESTOU DESENVOLVENDO UM SISTEMA DE PAGAMENTOS COMO SE FOSSE UM GERADOR DE BOLETOS, FUNCIONARIA QUASE DA MESMA FORMA, EU COLOCO A DATA DE PAGAMENTO, O VALOR DO PRODUTO E O SISTEMA GERA A LISTA DE DATAS À PARTIR DA DATA DE PAGAMENTO SOMANDO AS PARCELAS, TENHO O SEGUINTE CÓDIGO:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?php
$datadepagamento = "31/01/2015";
$parcelas = "10";
for($i=0;$i<=$parcelas-1;$i++){
echo date("d/m/Y", strtotime(str_replace("/", "-", $datadepagamento)."+$i month"));
echo"<br>";
}
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
O RESULTADO SAI O SEGUINTE:
31/01/2015
03/03/2015
31/03/2015
01/05/2015
31/05/2015
01/07/2015
31/07/2015
31/08/2015
01/10/2015
31/10/2015
PORÉM JÁ NO MÊS DE MARÇO COMO POR **EXEMPLO** EU GOSTARIA QUE ELE RESPEITASSE A DATA ORIGINAL, MAS MANTIVESSE A ULTIMA DATA DO MÊS, E CONTINUARIA O LAÇO NORMALMENTE, JÁ TENTEI USAR O "date("t/m/Y")", MAIS SEM SUCESSO, GOSTARIA DO SEGUINTE RESULTADO:
31/01/2015
28/02/2015
31/03/2015
30/04/2015
31/05/2015
30/06/2015
31/07/2015
31/08/2015
30/09/2015
31/10/2015
AGRADEÇO DESDE JÁ A AJUDA DE VOCÊS, ABRAÇOS.
Fala galera beleza, depois de tantas tentativas um amigo meu me ajudou ele e programador e modificou o código pra mim e ficou funcionando perfeitamente da forma que eu precisava, ficou semelhante a um sistema bancário do bradesco e eu quero compartilhar com vocês caso um dia precisem, vejam como ficou:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?php
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
CRÉDITOS: ANDREIKI CARANA (www.andreiki.com)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$datadepagamento = "31/01/2015";
$parcelas = "15";
//Monta e inicia o laço, inicia pelo "0" pra manter a primeira data e remove a ultima pra manter a quantidade de parcelas definida pelo usuário
for($i=0;$i<=$parcelas-1;$i++){
//Divide a data original para manipulação
$d = substr($datadepagamento, 0, 2); //Dia do pagamento (31)
$m = substr($datadepagamento, 3, 2); //Mês do pagamento (01)
$a = substr($datadepagamento, 6, 4); //Ano do pagamento (2015)
//Divide a data faturada, obtém o ultimo dia do mês e remove 3 dias no caso for dias 29,30,31
$dd = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 0, 2); //Dia do pagamento (31 -3 = 28 "+1 mês")
$mm = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 3, 2); //Mês do pagamento (01 "+1 mês")
$aa = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 6, 4); //Ano do pagamento (2015 "+1 mês")
//Verifica se a data existe pelo laço, se ela existir ela percorre normalmente, mantendo o dia original definida pelo usuário, se não existe (else) ela obtém o ultimo dia do mês e da a continuidade na "função".
if(checkdate($mm,$d,$aa)){$datafinal = "$d/$mm/$aa";}else{$datafinal = "$dd/$mm/$aa";}
//Printa o resultado final
echo"$datafinal<br/>";
//Finaliza o laço
}
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
RESULTADO FINAL:
31/01/2015
28/02/2015
31/03/2015
30/04/2015
31/05/2015
30/06/2015
31/07/2015
31/08/2015
30/09/2015
31/10/2015
30/11/2015
31/12/2015
31/01/2016
29/02/2016
31/03/2016
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=