icarof 9 Denunciar post Postado Outubro 31, 2014 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
Williams Duarte 431 Denunciar post Postado Novembro 1, 2014 A dica é, armazene datas em campos do tipo date "Y-m-d" 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
icarof 9 Denunciar post Postado Novembro 1, 2014 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
Electronic 124 Denunciar post Postado Novembro 1, 2014 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
Dorian Neto 41 Denunciar post Postado Novembro 1, 2014 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
ExtremsX 58 Denunciar post Postado Novembro 1, 2014 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
icarof 9 Denunciar post Postado Novembro 1, 2014 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
Williams Duarte 431 Denunciar post Postado Novembro 1, 2014 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
Electronic 124 Denunciar post Postado Novembro 1, 2014 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
icarof 9 Denunciar post Postado Novembro 2, 2014 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
Dorian Neto 41 Denunciar post Postado Novembro 6, 2014 Não esqueça de marcar o tópico como resolvido. Compartilhar este post Link para o post Compartilhar em outros sites