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 jganjos
      Boa tarde senhores.
      Estou gerando esta array com o PHP
       
      Array ( [header] => Array ( [ico] => fas fa-building [tit] => Empresa [lab] => Cadastro da Empresa ) [forms] => Array ( [RAZAO] => Array ( [tit] => Razão Social ) [NFANTASIA] => Array ( [tit] => Nome Fantasia [lin] => 1 [col] => 10 ) [STATUS] => Array ( [tit] => Status [typ] => switch [val] => 1,0 [lin] => 1 [col] => 2 ) [INSCRICAO] => Array ( [tit] => Inscrição [lin] => 2 [col] => 4 ) [IE] => Array ( [tit] => Insc. Estadual [lin] => 2 [col] => 4 ) [IM] => Array ( [tit] => Insc. Municipal [lin] => 2 [col] => 4 ) [CEP] => Array ( [tit] => CEP [lin] => 3 [col] => 4 [btn] => search ) [TIPO_END] => Array ( [typ] => hidden ) [ENDERECO] => Array ( [tit] => Endereço [lin] => 4 [col] => 9 ) [NUM_END] => Array ( [tit] => Número [lin] => 4 [col] => 3 ) [BAIRRO] => Array ( [tit] => Bairro [lin] => 5 [col] => 6 ) [COMPL] => Array ( [tit] => Complemento [lin] => 5 [col] => 6 ) [MUNICIPIO] => Array ( [tit] => Município [lin] => 6 [col] => 9 ) [UF] => Array ( [tit] => Estado [typ] => list [tab] => estados [lin] => 6 [col] => 3 ) [TEL1] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [TEL2] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [EMAIL] => Array ( [tit] => e-mail [typ] => email [lin] => 8 [col] => 6 ) [SITE] => Array ( [tit] => Site da empresa [typ] => website [lin] => 8 [col] => 6 ) ) ) Preciso listar os valores da Array *FORMS* e seus respectivos filhos mas não estou conseguindo utilizando o foreach.
      Alguém teria uma dica?
    • By helkton
      galera preciso criar um array que pegue os itens adicionais de cada ITEM  escolhido...
      vou tentar explicar...
      tenho uma pagina com as categorias do CARDÁPIO
      LANCHES - AÇAI - SALGADOS - PIZZAS
      CADA categoria contem seus devidos itens tipo...
      LANCHES 1-xFrango 2-xSalada 3-xBacon AÇAI 1-Copo 300ml 2-Copo 500ml 3-Copo 700ml até esta funcionando, cada item que o usuário escolher, salvo em uma S_SESSION['itens'] 
      agora vamos supor que, esses itens tenham adicionais, já criei um <?php if(){}?> e ele já faz essa verificação, então se o item LANCHES 1=XFRANGO NÃO conter adicional para ser escolhido ele simplesmente irá ser adicionado no carrinho, AGORA se o item tiver adicional para ser escolhido, irá abrir um MODAL com os adicionais disponíveis para o ITEM
      Agora digamos que o AÇAÍ) 1-COPO 300ML tenha adicional eu abro o meu modal com os seguintes adicionais:
      FRUTAS 1-Morango 1,00 2-Banana 1,00 3-Uva 1,00 COMPLEMENTOS 1-Ninho 1,00 2-Coco Ralado 1,00 3-Castanha 1,00 COBERTURA 1-Chocolate 1,00 2-Leite condensado 1,00 3-Morango 1,00 ADICIONAIS 1-Nutella 1,00 2-Bis 1,00 3-KitKat 1,00 então como pego esses adicionais e salvo em cada ITEM escolhido pelo usuário e se possivel somar esses adicionais que tenha valores também
    • By Rafaellaranjo
      Estou sofrendo a um tempo com consumo alto de CPU em meu servidor na maioria dos casos em virtude do MYSQL, trabalho com PHP e APACHE e MYSQL. Realizei inúmeras tentativas para acabar com o alto consumo porém todas fracassadas. O evento costuma ocorrer sempre nos mesmos horários, parte da manhã por volta de 9:30/11:00 e parte da tarde entre 14:00/16:00. Meu servidor possui hardware suficiente para suportar, porem acredito que esteja mal configurado. Estou encaminhando alguns processos que observo estar executando em excesso obtidos através do ps aux.
      dovecot/pop3-login
      dovecot/imap-login
      dovecot/lmtp -L
      php-fpm: pool app (o que mais aparece)
      Ps: utilizo um servidor CENTOS 7
       
    • By dimoreira
      Boa noite programadores, estou a procura de um profissional que desenvolva um site simples, que tem apenas que me mostrar os resultados em tempo real da pagina de resultados da bet 365. Mas especificamente do futebol virtual. Vou mandar em anexo uma foto pra ter como base.   O modelo mais simples possivel é somente para acompanhar os resultados em tempo real sem ter q esta acessando o site da bet.


×

Important Information

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