Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

icarof

Criar vencimento a partir de data do BD

Recommended Posts

Olá Galera

 

Bom to com o seguite problema:

 

tenho um sistema de cadastro, onde o usuario se cadastra via net, ai junto com os dados dele, é enviado pro BD a data do cadastro, ai no arquivo que grava os dados no banco, ele soma 31 dias na data do cadastro.

 

tipo, como não experiente com sql e meu conhecimento em php é muito pequeno, as datas estaõ sendo armazenadas como varchar só que nó padrão do mySQL Y/m/d, para exibir elas eu as converto.

 

Ai na ficha do cliente aparece a data de cadastro e o vencimento, ai vem a duvida.

 

Como eu faço para que quando seja exedido os 31 dias, na pagina mostre uma mensagem avisando que esta vencido, e como posso fazer para que quando for feita a renovação da assinatura não seja preciso depender da data de inscrição?

 

Segue codigos

$venc = strtotime($vencimento);
	$impvec = date('d/m/Y', $venc);

ai ele recebe a data no padrão do Y/m/d e muda para o convencional para mostrar na tela, o mesmo acontece com a data

// Calcula a data do vencimento
$timestamp = strtotime($data . "+31 days");

// lança o valor na variavel
$vencimento = date('Y/m/d', $timestamp); // passado com os padrões do MySQL para ser traduzido na vercliente.php

ai as linhas que somam os dias a data de cadastro e gravam ela como data de vencimento

 

Já li alguns post aqui do forum, mas não serve para o que preciso.

 

Alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A dica é, armazene datas em campos do tipo date "Y-m-d"

 

h19he4V.png

No insert você pode usar o comando NOW(), que vai inserir a data atual, ou add intervalos a data

DATE_ADD(NOW(), INTERVAL 30 DAY)

Para controlar estes fluxos de datas, de uma boa estuda aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questao de moviemnto de dados entre as datas ja consegui, eu queria uma forma de compara-las, para mostrar quem é maior ou menor

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questao de moviemnto de dados entre as datas ja consegui, eu queria uma forma de compara-las, para mostrar quem é maior ou menor

 

Pra comparar as datas transforme-as em timestamp UNIX

 

se 1414851426 menor que 1414851483 ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra fazer a comparação não tem mistério, é como nosso amigo @Eletronic disse. Na página onde você quer inserir a verificação pegue a data atual e compare com a data de vencimento para saber se ela é igual ou maior que a data atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mysql já compara para você no próprio select, algo como SELECT data<NOW().

 

Outra forma de compara é usar Datetime que ao se criar um objeto data deixa que vc possa fazer algo como:

if ($objData1 < $objData2)

Outra forma é converter pra Timestamp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo acho que vai dar certo se eu conseguir converter a data de vencimento para timestamp unix.

 

ela vem do Bd no formato Y/m/d e na exibição eu converto com o formato date.

 

alguem sabe como converter? poruqe ai uso em if e faço as comparações

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use Datetime como já foi sugerido. ;))

 

 

Exemplo:


date_default_timezone_set('America/Sao_Paulo');

$timestampDB  = '2013-11-01';
$timestamp    = date('Y-m-d');

$date = new DateTime( $timestamp );
$date1 = new DateTime( $timestampDB );
$date2 = new DateTime( $timestamp );

//calcula a diferenca entre as duas datas
$diff = $date1->diff($date2);

if( $date->format( 'Y-m-d' ) > $timestampDB ){
	echo 'Vencido há '. $diff->days .' dias ';
} elseif( $date->format( 'Y-m-d' ) == $timestampDB ){
	echo 'Vence em hoje';
} else {
	echo 'A Vencer';
}

ela vem do Bd no formato Y/m/d e na exibição eu converto com o formato date.

E corrige isso, manter o erro já é burrice!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo acho que vai dar certo se eu conseguir converter a data de vencimento para timestamp unix.

 

ela vem do Bd no formato Y/m/d e na exibição eu converto com o formato date.

 

alguem sabe como converter? poruqe ai uso em if e faço as comparações

$date = new DateTime("2014-02-10");
echo $date->format("U");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa com adiEletronic eu encontrei uma solução na net

 

esse codigo

// Define os valores a serem usados
$data_inicial = date('d/m/Y', $times);
$data_final = date('d/m/Y', $venc);

// Cria uma função que retorna o timestamp de uma data no formato DD/MM/AAAA
function geraTimestamp($data) {
$partes = explode('/', $data);
return mktime(0, 0, 0, $partes[1], $partes[0], $partes[2]);
}

// Usa a função criada e pega o timestamp das duas datas:
$time_inicial = geraTimestamp($data_inicial);
$time_final = geraTimestamp($data_final);

// Calcula a diferença de segundos entre as duas datas:
$diferenca = $time_final - $time_inicial; 

// Calcula a diferença de dias
$dias = (int)floor( $diferenca / (60 * 60 * 24)); 


	
if ($dias >= 1)
	{
		print "<strong><font color='#59B200'>Cadastro em Dias, faltam $dias para vencer</strong></font>";
	}
	else
	{
		
		print "<strong><font color='#FF0000'>O Cadastro Está Vencido! a $dias</strong></font>";
	}

	?>

dai uso o numero de dias pra cacular o vencimento.

 

Wilians , quando eu mudo, o padrão das datas, as consultas não funcionam quando estão nas hospedagem, no pc sempre vai pra esse formato, mesmo sendo alterado e gravado como ver char.

 

como não quiz perder tenpo, passei despercebido, mas vou tentar alterar.

 

vlw a aju

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.