Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Retirar mês, dia e ano de Banco de Dados


Professor Diego

Pergunta

Olá pessoal, estou com a seguinte dúvida

Estou usando este script para calcular a idade de alguém

<?

function calc_idade($data_nasc) {

$data_nasc=explode("/",$data_nasc);

$data=date("d/m/Y");

$data=explode("/",$data);

$anos=$data[2]-$data_nasc[2];

if ($data_nasc[1] > $data[1]) {

return $anos-1;

} if ($data_nasc[1] == $data[1]) {

if ($data_nasc[0] <= $data[0]) {

return $anos;

break;

} else {

return $anos-1;

break;

}

} if ($data_nasc[1] < $data[1]) {

return $anos;

}

}

$dia = 22;

$mes = 06;

$ano = 1987;

echo calc_idade("$dia/$mes/$ano");

?>

O que não consigo é atribuir as variáveis $dia, $mes e $ano os respectivos valores do banco de dados.

Por exemplo no campo data de nascimento no banco de dados esta no seguinte formato dd/mm/YYYY . Queria pegar o "dd" e atribuir a variável $dia, o "mm" e atribuir a variável $mes e "YYYY" para variável $ano

Me perdoem mas não encontrei nada igual no fórum.

abraços

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
e ai diego, da uma olhada nesse tópico aki::

http://scriptbrasil.com.br/forum/index.php?showtopic=91229

Brother, foi dai mesmo que tirei esta, mas olha só o que eu quero.

Imagine a seguinte situação, eu vou entrar em um formulário com o seguinte

Nome: Diego

Data de Nascimento: 22/12/1987

Ai é o seguinte, eu quero que ao executar o escript ele exiba o seguinte:

O ano é: 1987

O Mês é: 12

O dia é: 22

Desta forma poder trabalhar com várias coisas tipo:

Você nasceu no Vigésimo Segundo dia do mês de Dezembro do ano de 1987

Sei lá gente para mim parece uma coisa simples, mas sou bem leigo em PHP por enquanto rs...

Link para o comentário
Compartilhar em outros sites

  • 0
Primeiro, se você for armazenar isso no BD use um campo do tipo date, assim você pode até mesmo calcular a idade direto na query (dependendo do BD).

Segundo, assumindo que o formato seja dd/mm/aaaa, use o explode para separar os ítens.

Olha só pessoal consegui resolver isso aqui... vou postar o código comentado para vocês caso alguém precise tah ae a dica... Se alguém souber uma outra maneira de fazer também seria legal posta aqui....

Abraços


<?

//inicia a função para calculo da idade
//Esta função recebe a variável $data_nasc que será utilizada para calcular a idade
function calc_idade($data_nasc) {

//a função PHP explode é utilizada para desmenbrar strings de acordo com um caractere pré programado
//neste exemplo a função vai desmembrar a variável $data_nasc a cada "/" (barra) encontrada no nosso
//caso vai separar o mês, o dia, e o ano, cada um em um array
$data_nasc = explode("/",$data_nasc);

//A variável $data irá definir o formato de data para dd/mm/YYYY padrão utilizado por nós. ;)
$data=date("d/m/Y");

//Aqui vemos o uso da função explode fazendo a mesma opração da variável $data_nasc porém com a
//variável $data que pega a data atual.
$data=explode("/",$data);

//Como dito acima a função explode ira armazenar cada parte da string em um array com o respectivo
//nome da variável sendo assim temos:
//$data_nasc[0] = dia do nascimento
//$data_nasc[1] = mês do nascimento
//$data_nasc[2] = ano do nascimento
//
//$data[0] = dia atual
//$data[1] = mês atual
//$data[2] = ano atual
//Agora basta subtrairmos o ano atual pelo ano de nascimento para obter a respectiva quantidade de anos de
//uma data para outra.
$anos=$data[2]-$data_nasc[2];

//O maior problema esta na data atual por exemplo:
//Suponhamos que o dito cujo nasceu no dia 31/12/1987 e a data atual é qualquer data até o dia 30/12
//resumindo ele ainda não fez aniversário. Pegando a data de hoje (02/08/2010) teriamos como resultado 23 anos
//mas sabemos que na verdade a idade é 22 anos.
//Para resolver esta situação temos que estabelecer uma condição em que se o o mês atual for menor que o mês da
//da data de nascimento temos que tirar um ano do resultado pois o dito cujo ainda não fez aniversário.
if ($data_nasc[1] > $data[1]) {
return $anos-1;
}

//Caso a condição acima retorne false temos que analisar o dia do mês para sabermos se completou ou não
//mais um ano de vida. Para isso verificamos se o mês de nascimento é igual ao mês atual caso retorne true
//verificamos se o dia de nascimento é menor ou igual ao da data atual.
if ($data_nasc[1] == $data[1]) {
if ($data_nasc[0] <= $data[0]) {
return $anos;
break;
}
else
{
return $anos-1;
break;
}
}
if ($data_nasc[1] < $data[1]) {
return $anos;
}
}

//Aqui um pequenos exemplo de como tu funciona
$dia = 22;
$mes = 06;
$ano = 1987;

echo calc_idade("$dia/$mes/$ano");

?>
[/codebox]

É isso ai gente, ficou meio confuso nas questões de if se alguém souber explicar melhor por favor pois eu sinceramente acho que esta meio invertido na lógica dos maiores e menores, mas aqui funciona certinho retorna as devidas idades corretamente.

Um grande abraço a todos e muito obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...