Jump to content
dev_aprendiz

Problema com a data ao gerar parcelas com função mktime do MySQL

Recommended Posts

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.

 


 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By juh2425
      sou novo no php e js gostaria de saber como faço validação da data pra que se o usuario digitar o dia maior que a data atual de alert de data invalida
      <script> $("#btn__procurar").click(function () { if ($("#data_inicial").val().trim() == "") { alert("Digite a data inicial"); return false; } if ($("#data_final").val().trim() == "") { alert("Digite a data final"); return false; } }); </script>  
    • By Cleudiney T Brandão
      Pessoal alguém me dá uma ajuda com Mysql por favor.
      Tenho uma coluna em meu BD que precisaria o seguinte: 
      Ela não é obrigatória mas se preenchida não poderia ter outras ocorrências dela.
      É um campo que ao meu ver seria UNIQUE mas que aceitasse NULL.
    • By Cleudiney T Brandão
      Pessoal alguém me dá uma ajuda com Mysql por favor.
      Tenho uma coluna em meu BD que precisaria o seguinte: 
      Ela não é obrigatória mas se preenchida não poderia ter outras ocorrências dela.
      É um campo que ao meu ver seria UNIQUE mas que aceitasse NULL.
    • By isabela_coelho
      olá, uso MySQL e tenho um sistema funcional de login e cadastro , em java (NetBeans), mas estou com um problema na hora de criar um cadastro o meu código não checa se existe um usuario na BD como faço isso??
    • By Forsetes
      Boa tarde, preciso de ajuda para criar uma espécie de escadinha em uma frase.
      O resultado final seria mais ou menos assim
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.