Ir ao conteúdo

Posts recomendados

Postado

Olá! Preciso de uma ajuda dos nobres colegas deste fórum.

 

Tenho o seguinte código JavaScript:

<script type="text/javascript">
    $(document).ready(function() {
        $("select[name='plano']").change(function() {
            var $valor = $("input[name='valor']");
            var $validade = $("input[name='validade']");
            var $nome = $("input[name='nome']");

            $.getJSON('classes/preenche_campo/function.php', {
                plano: $(this).val()
            }, function(json) {
                $valor.val(json.valor);
                $validade.val(json.validade);
                $nome.val(json.nome);
            });
        });
    });
</script>

 

Ele envia o ID do PLANO para o PHP, a seguir:

<?php

    $host    = "servidor";
    $usuario = "usuario";
    $senha   = "senha";
    $banco   = "banco";
    $conn 	 = mysqli_connect($host, $usuario, $senha, $banco);

    function retorna($plano, $conn){
        $result_consulta = "SELECT * FROM planos WHERE idplano = '$plano' LIMIT 1";
        $resultado_consulta = mysqli_query($conn, $result_consulta);
        if($resultado_consulta->num_rows){
            $row_consulta = mysqli_fetch_assoc($resultado_consulta);

            date_default_timezone_set('America/Sao_Paulo');
            $hoje = date("Y/m/d");
            $venc_rec = "2019/10/12";

            $validade = $row_consulta['validade'];

            if($venc_rec > $hoje){
                $vencimento = date('Y/m/d', strtotime('+'.$validade.' days', strtotime($venc_rec)));
            }else{
                $vencimento = date('Y/m/d', strtotime('+'.$validade.' days', strtotime($hoje)));
            }

            $valores['valor'] = "R$ ".$row_consulta['valor'];
            $valores['validade'] = date('d/m/Y', strtotime($vencimento));
            $valores['nome'] = $row_consulta['nome'];
        }else{
            $valores['nome'] = 'Plano não encontrado';
        }
        return json_encode($valores);
    }

    if(isset($_GET['plano'])){
        echo retorna($_GET['plano'], $conn);
    }
?>

 

O código PHP pega o id que foi passado pelo JavaScript e retorna o vencimento mediante a validade retornada pelo banco de acordo com o Plano do ID, contando da data do HOJE.

 

Até então estes códigos funcionam perfeitamente, mas agora preciso que o JavaScript passe também uma data, além do plano, para que o vencimento seja calculado com a validade a partir da data, passada via parâmetro, e não do HOJE.

 

A variável "$venc_rec" deve receber a data passada, mas por hora está fixa, só para o código continuar funcionando.

A intenção é que o PHP verifique se o vencimento atual é maior que a data do HOJE, se for, ele deverá somar a validade a partir deste vencimento, e se o vencimento for excedido a validade seja adicionada ao dia do HOJE.

 

A validade recebida do banco é um número inteiro e as data são tratadas no formato "YYYY/mm/dd" mas exibidas para o usuário do sistema de recargas em "dd/mm/YYYY" (os formatos das datas não são tão relevantes, somente informei porque o código não faz os cálculos corretamente com a data no formato brasileiro).

 

Já tentei de várias formas, mas aí o código para de funcionar.

 

Se puderem me ajudar, serei imensamente grato.

Postado

@Rendesson Santos Você tem outras opções para manipular uma data no php, nesse exmplo eu utilizo o Datatime object.

 

Exemplo:

date_default_timezone_set("America/New_York");
$data_de_hoje = date_create(); // Criando um object DateTime() com a data atual
$data_recebida = date_create("2019-10-17"); // Criando um object Datatime() com a data recebida
$data_da_validade = null;
$dias_de_validade = 76; // 60 dias

if ($data_recebida > $data_de_hoje)
{
	$data_da_validade = date_add($data_recebida, date_interval_create_from_date_string($dias_de_validade." days"));
}
else
{
	$data_da_validade = date_add($data_de_hoje, date_interval_create_from_date_string($dias_de_validade." days"));
}


$valores['validade'] = $data_da_validade->format("d/m/Y");

echo(json_encode($valores));

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!