Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
cesar3m

PHP: como calcular idade automaticamente ano pós ano?

Recommended Posts

Boa tarde;

Inseri na tabela usuários do banco de dados, a coluna idade e data de cadastro. A idade não é o usuário que informa, é o código que calcula a data atual - a data de nascimento que o usuário informa, ficou assim e calcula perfeitamente:
 

$diasdevida = 365-($mesdenascimento*30-30+$diadenascimento)+365*(date('Y')-$anodenascimento)-365;$idade = ($diasdevida/365);$idade = round($idade);

No entanto, quando fui registrar a data de cadastro do usuário é que pensei se esta função date usada para calcular o $diasdevida não vai atualizar-se ano que vem, para que a idade aumente 1 ano, ou será fixo como o date da data de cadastro.

Sendo assim, como faço para que a date de $diasdevida atualize ano após ano, e a date de $datadocadastro seja fixa para o momento em que foi cadastrado o usuário?
Editado por dif
acrescentar a tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

@cesar3m

 

Acredito q nem precise desse cálculo todo... 

Se você registrou no banco de dados a data de nascimento.. é só calcular diretamente com o ano atual e exibir em tela.

Basicamente na tabela você terá o campo date para a data de nascimento e um campo date para data de cadastro... acho q não tem mistério no lance.

 

exemplo:

 

no banco de dados:

ID   nome     dataNascimento    dataCadastro          1    Fulano   1982-07-09        2015-06-17

No seu php você resgata a data de nascimento, extrai o ano e diminui do ano atual.

<?php  include 'conexao.php';  $query = mysqli_query($conexao,"Select dataNascimento FROM tbl_usuario where ID = $id");  $dados = mysqli_fetch_object($query);  //separa a data em 3 partes em um array  $separaData = explode("-", $dados->dataNascimento);    //primeiro índice: 1982   $anoNascimento = $separaData[0];   //ano atual  $anoAtual = date("Y");  $idade = $anoNascimento - $anoAtual;  echo $idade;

Deste jeito, a idade sempre será somada em 1 a cada ano...  porque foi usado o ano  do nascimento e o ano atual.  Mas tem um detalhe..  isso não conta os anos bissextos.  mas é por aí.

Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif

Se eu deixo a conta simples, por exemplo: nasci em 1993, e hoje é 2015, então tenho:

2015-1993 = 22

Está certo? Não, porque nasci em novembro de 1993 e hoje tenho 21 anos, então é melhor deixar o cálculo complexo para a idade ficar exata, correto?

Mas minha preocupação é se ano que vem a função date("Y") irá atualizar-se sozinha...
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@cesar3m

 

Tudo bem, pode deixar complexo. Eu que sou adepto da simplicidade.

E sim. vai se atualizar.  

 

Veja: http://php.net/manual/pt_BR/function.date.php

 

Procure na tabela o Y... vai ver que ele retorna sempre o ano atual em 4 dígitos.

 

Então.. se hj o date("Y") = 2015 ... .  ano que vem o date("Y") = 2016  e assim por diante.

 

No php sempre que o desenvolvedor quiser retornar a data atual, vai usar date("Y-m-d") sendo que o "m" minusculo retorna o mês em formato numérico com zeros, o "d"  minusculo retorna o dia em formato numérico com zeros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif

$datadocadastro = date('Y-m-d H:i:s');

A data de cadastro está fixa, verifiquei hoje e a data de cadastro de um usuário de teste continua na mesma data que foi cadastrado! Que bom!

Agora a data na função de idade, espero que mude ano que vem:

$diasdevida = 365-($mesdenascimento*30-30+$diadenascimento)+365*(date('Y')-$anodenascimento)-365;

***** é ter que esperar até lá pra ter certeza kkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

@cesar3m

 

Não se preocupa... vai mudar.

 

Faça o teste no seu localhost.

 

crie um arquivo php assim:

<?php echo date("Y");

salve-o... e rode em localhost..

Depois altere a data no seu calendário do windows... para 2016  e rode novamente o arquivo php em localhost.. verá que ele vai mostrar o novo ano.

 

Você precisa entender que:

 

se fizer assim:

// vai mostrar 2015  - dinâmico é resgatado o ano atualecho date("Y"); //vai mostrar 2016  - é fixo.. é resgatado o valor que você colocouecho date("2016"); 
Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×