SHWE12 1 Denunciar post Postado Novembro 16, 2010 Boa tarde estou desenvolvendo um sistema onde eu coloco a quantidade de parcelas e a data do primeiro vencimento e gostaria que o sistema calcula-se para mim a partir da data do primeiro vencimento as outras parcelas automaticamente ex: Parcelas = 4 Data da Primeira Parcela = 20/11/2010 Parcela 01 = 20/11/2010 Parcela 02 = 20/12/2010 Parcela 03 = 20/01/2011 Parcela 04 = 20/02/2011 To quebrando a cuca aqui e nada ainda... está ai o código feito até o momento... $cliente = $_POST['cliente']; $valor = $_POST['valor']; $parcelas = $_POST['parcelas']; $primeiro_vencimento = $_POST['primeiro_vencimento']; $observacoes = $_POST['observacoes']; $pr_vencimento = implode(preg_match("~\/~", $primeiro_vencimento) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $primeiro_vencimento) == 0 ? "-" : "/", $primeiro_vencimento))); //EXIBE OS PRODUTOS DA CESTA for($i=0; $i<($parcelas); $i++) { $consulta = "INSERT INTO pagamento VALUES (null, '$cliente', '$valor', '$cont/$parcelas', '$data_vencimento', '$observacoes', 'aberto')"; mysql_select_db($base_dados, $conexao); $Result1 = mysql_query($consulta, $conexao) or die(mysql_error()); $cont = $cont+1; } Compartilhar este post Link para o post Compartilhar em outros sites
goruks 0 Denunciar post Postado Novembro 16, 2010 procura no forum tem varios topicos de calculo com datas basicamente você pode transformar a data com o mktime e depois fazer calculos como +1month ai faz automatico o calculo essas passagens de ano... mes com 30 ou 31 dias etc Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Chaves 0 Denunciar post Postado Novembro 16, 2010 Você pode utilizar o mktime da seguinte forma: for($i = 1;$i < $parcelas;$i++){ $datas[]= mktime(0, 0, 0, 20, 11+$i, 2010) } O maktime corrige a data se for gerado em um intervalo inválido exemplo: se o resultado for 01/13/2010 ele gera 01/01/2011. Compartilhar este post Link para o post Compartilhar em outros sites
SHWE12 1 Denunciar post Postado Novembro 16, 2010 Ola Leandro, Desculpe mas não entendi muito bem o que você me passou no código.. Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Chaves 0 Denunciar post Postado Novembro 16, 2010 Ola Leandro, Desculpe mas não entendi muito bem o que você me passou no código.. SHWE12, Não tive tempo de montar um exemplo melhor. Mas, a lógica é a seguinte vocẽ percorre um 'for' fom a quantidade de parcelas e o mktime vai te dat a data de cada parcela seguinte. Outro exemplo: $parcelas = 4; $data = explode('/','20/11/2010'); for($i = 1;$i < $parcelas;$i++){ $retorno = mktime(0, 0, 0, $data[0], $data[1]+$i, $data[2]); echo date('d/m/Y',$retorno).'<br>'; } Não testei. Mas, esse exemplo deve imprimir: 20/01/2011 20/02/2011 20/03/2011 SHWE12, Desculpe, o exemplo que postei anteriormente tinha um erro. Ele acrescenta um dia e não um mês a data. No link abaixo, postei o código novamente com as devidas correções. http://www.chaves.in/2010/11/como-gerar-data-de-vencimento-de-acordo-com-quantidade-de-parcelas/ Compartilhar este post Link para o post Compartilhar em outros sites
netShot 1 Denunciar post Postado Novembro 16, 2010 Semana passada já foi peguntado isso umas 4x: <?php $dataInicial = DateTime::createFromFormat('d/m/Y', '08/11/2010'); $somaIntervalo = DateInterval::createFromDateString('15 days'); foreach(new DatePeriod($dataInicial, $somaIntervalo, 5, DatePeriod::EXCLUDE_START_DATE) as $proxPeriodo) { echo $proxPeriodo->format('d/m/Y') . " "; } ?> Mais simples que isso, só fazendo pra você. @Leandro Chaves O seu código irá retornar: 12/08/2011 13/08/2011 14/08/2011 O código certo usando mktime seria: <?php $parcelas = 4; $data = explode('/', '16/11/2010'); $somar_x_dias = 30; for($i = 0 ;$i < $parcelas; $i++){ echo date('d/m/Y', mktime(0, 0, 0, $data[1], $data[0] + $somar_x_dias, $data[2])) , '<br />'; $data = explode('/', date('d/m/Y', mktime(0, 0, 0, $data[1], $data[0]+$somar_x_dias, $data[2]))); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
oliveiros 1 Denunciar post Postado Setembro 16, 2014 E como gravar o numero das parcelas 1,2,3,4 ? Compartilhar este post Link para o post Compartilhar em outros sites