-
Conteúdo Similar
-
Por maruanbredoff
Bom dia pessoal. Estou com um problema no meu sistema.
Eu tenho o seguinte Codigo para fazer o calculo das parcelas. Funciona perfeitamente mas tem algumas situações que não resolve como é o caso do mes de fevereiro que tem 28 dias e nos meses que não tem 31 dias. Alguem pode me ajudar seguindo o padrao deste codigo como faria para contornar essa situação?
<?php while($qtdparcelas >0) { // realiza a gravação no banco de dados $data = $ano.'/'.$mes.'/'.$dia;// iguala a data a data da venda //$sqlinsert ="INSERT INTO contas_receber (idparcelas, parcela, idcliente, idmovimento, vencimento, valor, idsituacao) VALUES (null, '$parcela', '$idcliente', '$idmovimentoprox', '$data', '$valor_parcela','1')"; //mysqli_query($con,$sqlinsert) or die(mysqli_error($con)); $parcela++; if ($mes<12){ $mes++; }// adiciona +1 a variavel mes else{ $mes = 1; $ano++;} echo $data; ?><br> <?php } Tentei fazer desta forma aqui mas não funcionou $qtdparcelas=$qtdparcelas-1;// subtrai 1 a variavel parcela if(($dia=31) && ($mes=4) && ($mes=6) && ($mes=9) && ($mes=11)){ $mes++; $dia=30; } elseif($mes=2 and $dia >28){ $dia=28; }
-
Por evandrozk
Bom dia, estou com um exercicio que não consigo resolver, gostaria de saber se alguem consegue me ajudar, fazendo da forma mais fácil, utilizando while.
Dado os três valores de entrada:
Número de parcelas;
Data Base para cálculo;
Quantidade de dias entre cada parcela.
Faça um algoritmo que calcule a data de vencimento de cada parcela.
Observação 1: Quando ocorrer que a data de vencimento cair em um sábado ou domingo, deve-se incrementar a
data até que ela alcance um dia útil (segunda a sexta).
Observação 2: Na internet existem funções que dado uma data para esta função, ela retornará se é sábado ou
domingo.
Caso de Testes:
Entrada:
3 parcelas;
11/10/2017
30 dias
Saída:
10/11/2017
11/12/2017
10/01/2018
-
Por Daniel Cruz
Bom dia, Gostaria de saber como faço para inserir o resultado das parcelas no banco de dados..
Segue o codigo..
<?php
// DATA PARA A PRIMEIRA PARCELA A PAGAR
/////////// ANO, MÊS, DIA
$val = "R$ 180,00";
$DP = Array(2018, 05, 31);
// QUANTIDADE DE PARCELAS
$parcelas = 12;
// ARRAY PARA AS DATAS
$data_array = Array($DP[0], $DP[1], $DP[2]);
$data_array2 = Array($DP[0], $DP[1], $DP[2]);
// ARMAZENANDO MÊS DA DATA MENOS 1
$n = $data_array[1]-1;
$v_i = $n;
// FOR PRINCIPAL
for($i = 0; $i < $parcelas; $i++) {
$v_i++;
// BASE PARA SOMAR OS MESES
$v = strtotime ( '+'.$i.' month' , strtotime(implode("-", $data_array))) ;
$v2 = strtotime ( '+'.$i.' month' , strtotime(implode("-", $data_array2))) ;
$nd = date ( 'Y-m-d' , $v );
$nd2 = date ( 'Y-m-d' , $v2 );
// PEDAÇOS DA DATA DO LAÇO
$p = explode("-", $nd);
// ATÉ 12 MÊSES
if($v_i <= 12) {
// BASE DO MÊS ATUAL
$base_mes = date("Y-m-t", strtotime($nd));
// PEGANDO O ÚLTIMO DIA DO MÊS DO LAÇO
$forma_data = $p[0].'-'.$v_i.'-01';
$ultimo_dia_do_mes = date("Y-m-t", strtotime($forma_data));
$b1 = explode("-", $base_mes); // EXPLODE DO BASE MES
$b2 = explode("-", $ultimo_dia_do_mes); // EXPLODE DO ULTIMO DIA DO MÊS
if($b1[2]!=$b2[2]) {
echo "$val || {$b2[0]}-{$b2[1]}-{$b2[2]}<br>";
} else {
echo "$val || {$b1[0]}-{$b1[1]}-{$data_array[2]}<br>";
}
}
// ATÉ 12 MÊSES
// DE 12 À 24 MESES
elseif($v_i > 12 && $v_i <= 24) {
// BASE DO MÊS ATUAL
$base_mes = date("Y-m-t", strtotime($nd));
// PEGANDO O ÚLTIMO DIA DO MÊS DO LAÇO
$forma_data = $p[0].'-'.($v_i-12).'-01';
$ultimo_dia_do_mes = date("Y-m-t", strtotime($forma_data));
$b1 = explode("-", $base_mes); // EXPLODE DO BASE MES
$b2 = explode("-", $ultimo_dia_do_mes); // EXPLODE DO ULTIMO DIA DO MÊS
if($b1[2]!=$b2[2]) {
echo "$val || {$b2[0]}-{$b2[1]}-{$b2[2]}<br>";
} else {
echo "$val || {$b1[0]}-{$b1[1]}-{$data_array[2]}<br>";
}
}
// DE 12 À 24 MESES
// DE 24 À 36 MESES
elseif($v_i > 24 && $v_i <= 36){
// BASE DO MÊS ATUAL
$base_mes = date("Y-m-t", strtotime($nd));
// PEGANDO O ÚLTIMO DIA DO MÊS DO LAÇO
$forma_data = $p[0].'-'.($v_i-24).'-01';
$ultimo_dia_do_mes = date("Y-m-t", strtotime($forma_data));
$b1 = explode("-", $base_mes); // EXPLODE DO BASE MES
$b2 = explode("-", $ultimo_dia_do_mes); // EXPLODE DO ULTIMO DIA DO MÊS
if($b1[2]!=$b2[2]) {
echo "$val || {$b2[0]}-{$b2[1]}-{$b2[2]}<br>";
} else {
echo "$val || {$b1[0]}-{$b1[1]}-{$data_array[2]}<br>";
}
}
// DE 24 À 36 MESES
// DE 36 À 48 MESES
elseif($v_i > 36 && $v_i <= 48){
// BASE DO MÊS ATUAL
$base_mes = date("Y-m-t", strtotime($nd));
// PEGANDO O ÚLTIMO DIA DO MÊS DO LAÇO
$forma_data = $p[0].'-'.($v_i-36).'-01';
$ultimo_dia_do_mes = date("Y-m-t", strtotime($forma_data));
$b1 = explode("-", $base_mes); // EXPLODE DO BASE MES
$b2 = explode("-", $ultimo_dia_do_mes); // EXPLODE DO ULTIMO DIA DO MÊS
if($b1[2]!=$b2[2]) {
echo "$val || {$b2[0]}-{$b2[1]}-{$b2[2]}<br>";
} else {
echo "$val || {$b1[0]}-{$b1[1]}-{$data_array[2]}<br>";
}
}
// DE 36 À 48 MESES
// DE 48 À 60 MESES
elseif($v_i > 48 && $v_i <= 60){
// BASE DO MÊS ATUAL
$base_mes = date("Y-m-t", strtotime($nd));
// PEGANDO O ÚLTIMO DIA DO MÊS DO LAÇO
$forma_data = $p[0].'-'.($v_i-48).'-01';
$ultimo_dia_do_mes = date("Y-m-t", strtotime($forma_data));
$b1 = explode("-", $base_mes); // EXPLODE DO BASE MES
$b2 = explode("-", $ultimo_dia_do_mes); // EXPLODE DO ULTIMO DIA DO MÊS
if($b1[2]!=$b2[2]) {
echo "$val || {$b2[0]}-{$b2[1]}-{$b2[2]}<br>";
} else {
echo "$val || {$b1[0]}-{$b1[1]}-{$data_array[2]}<br>";
}
}
// DE 48 À 60 MESES
else {
} // FIM DO ELSEIF
} // FIM DO FOR PRINCIPAL
?>
-
Por tony_lu
Ola pessoal, estou integrando o checkout transparente do Pagseguro e me surgiu uma duvida, quero colocar um campo onde o usuario pode colocar o numero de parcelas, mas precisa aparecer os valores, e como vou saber o valor exato das parcelas que tiver juros?!
Vi em algumas lojas virtuais que existe essa opção de aparecer as parcelas com os valores, alguem pode me ajudar?
-
Por dev_aprendiz
Boa tarde, pessoal! Não sou muito de pedir ajuda em fórum, procuro sempre resolver meus pepinos que aparecem durante o desenvolvimento. Mas, nesse caso em específico, já tentei de tudo e não consegui solução. Estou desenvolvendo um sistema web em PHP e consegui salvar parcelas no banco de dados MySQL. O problema só está sendo porque independente da data do serviço que eu escolha ou digite no campo de data do formulário, o dia salvo no banco de dados fica 2017-09-19. Ou seja, já tentei salvar a data 2017-08-18, que é hoje, já tentei outras datas para frente e para trás e sempre vai para o banco de dados a mesma coisa 2017-09-19, 2017-10-19, 2017-11-19, etc. Os meses e ano está correto, inclusive quando divido em 6 parcelas ele muda o ano certinho e tudo, o problema está sendo só o dia. Sempre 19. Segue o código que estou usando para gerar as parcelas:
$serviceID = mysqli_insert_id($conn);
$sql1 = "SELECT id_servico, data_servico,valor_procedimento,qtd_parcelas FROM servico WHERE id_servico = '$serviceID'";
$query1 = mysqli_query($conn,$sql1);
while($row = mysqli_fetch_assoc($query1)){
$servicoID = $row['id_servico'];
$dataS = $row['data_servico'];
$valorP = $row['valor_procedimento'];
$qtdP = $row['qtd_parcelas'];
//separando a data do serviço por partes
date_default_timezone_set('America/Recife');
$partes = explode("-",$dataS);
$dia = $partes[0];
$mes = $partes[1];
$ano = $partes[2];
//dividindo o valor total do servico pelo número de parcelas
$valor_parcela = $valorP/$qtdP;
for($i = 1;$i <= $qtdP;$i++){
//incrementando o mês em 1 para a primeira parcela entrar no
//mês posterior
//$data_vencimento = $dia.'-'.($mes+1).'-'.$ano;
$data_vencimento = date('Y-m-d',strtotime("+".$i." month",mktime($mes,$dia,$ano)));
$sql2 = "INSERT INTO parcelamento(id_servico,valor_parcela,parcela,data_vencimento) VALUES('$servicoID','$valor_parcela','$i','$data_vencimento')";
$insert2 = mysqli_query($conn,$sql2);
}
}
Tentei enviar em anexo imagem do retorno do BD, mas não está aceitando o arquivo. Só consegui enviar copiando e colando aqui.
'357', '77', '2', '2017-10-19', '108.33', '0', '0'
'358', '77', '3', '2017-11-19', '108.33', '0', '0'
'359', '77', '4', '2017-12-19', '108.33', '0', '0'
'360', '77', '5', '2018-01-19', '108.33', '0', '0'
'361', '77', '6', '2018-02-19', '108.33', '0', '0'
'362', '89', '1', '2017-09-19', '183.33', '0', '0'
'363', '89', '2', '2017-10-19', '183.33', '0', '0'
'364', '89', '3', '2017-11-19', '183.33', '0', '0'
'365', '89', '4', '2017-12-19', '183.33', '0', '0'
'366', '89', '5', '2018-01-19', '183.33', '0', '0'
'367', '89', '6', '2018-02-19', '183.33', '0', '0'
Ah, só explicando que no código acima o parâmetro de hora do mktime (0,0,0) não coloquei pois estava salvando no BD assim, com o ano 2024 e as datas nada a ver com o que passei no formulário:
'344', '75', '1', '2024-04-08', '133.33', '0', '0'
'345', '75', '2', '2024-05-08', '133.33', '0', '0'
'346', '75', '3', '2024-06-08', '133.33', '0', '0'
'347', '75', '4', '2024-07-08', '133.33', '0', '0'
'348', '75', '5', '2024-08-08', '133.33', '0', '0'
'349', '75', '6', '2024-09-08', '133.33', '0', '0'
Me perdoem qualquer falha, pois é a primeira vez que peço ajuda em fórum. Fico grata a quem puder me auxiliar.
-