Ir ao conteúdo
  • Cadastre-se

Javascript Passar parâmetro de PHP para JavaScript


Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

@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));

 

Link para o comentário
Compartilhar em outros sites

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...