[RESOLVIDO] Data Nascimento + Idade

Pessoal, pesquisei no fórum mas não consegui achar exatamente o que eu queria (dois campos diferentes). Eu estou com bastante dificuldade nos eventos do scriptcase.

Possuo dois campos em um formulário (data_nasc e idade). Gostaria de saber se têm a possibilidade do usuário colocar a data de nascimento e automaticamente o campo Idade ser completado. Eu verifiquei as macros do scriptcase, sei que é possível, mas estou com bastante dificuldade em saber onde colocá-las. Desde já agradeço pela ajuda!

Gabriel, pesquisa sobre a macro sc_date_dif_2. Com ela vc consegue o que está precisando.

Adeque as suas necessidades:

// CALCULA IDADE
$datahoje = date(“d-m-Y”);
if(!sc_date_empty({nascimento})){
{data} = sc_dif_date_2 ({nascimento}, “dd/mm/aaaa”, $datahoje, “dd-mm-aaaa”, 2);
{idade} = {data[2]};
}else{
{idade} = 0;
}

Obrigado Thyago!

Obrigado George! Isso seria no evento OnLoad?

Gabriel, você tem que colocar no evento Ajax (pode ser no onBlur) do campo Data de Nascimento para alterar o valor do campo idade quando informar a data e no onLoad para sempre carregar quando você for editar um registro.

Olá pessoal. Obrigado pela atenção. Tentei adaptar o código aqui no evento OnBlur como aconselhado porém sem sucesso. Acredito que minha maior dificuldade seja na parte de programação mesmo.

Posta aí como você está fazendo!

Olá Thyago!
Nome do campo data: data_nasc
Nome do campo idade: idade

$datahoje = date(“d-m-Y”);
if(!sc_date_empty({data_nasc})){
{data} = sc_dif_date_2 ({data_nasc}, “dd/mm/aaaa”, $datahoje, “dd-mm-aaaa”, 2);
{idade} = {data[2]};
}else{
{idade} = 0;
}

Abri o evento ajax, selecionei o campo data_nasc e em seguida no OnBlur selecionei o campo idade. Na hora da inserção da data de nascimento, o número de idade atualiza para 2.011, 2.012 (quando coloco 02/04/1989 e 02/04/1990)

Dê um echo no campo ‘data_nasc’, se vem do bco acho que o formato é aaaa-mm-dd.

Olá George!

Alterei como você disse, o banco é Postgresql e ele é no formato aaaa-mm-dd mesmo. Mas no scriptcase está definido como dd-mm-aaaa.

$datahoje = date(“d-m-Y”);
if(!sc_date_empty({data_nasc})){
{data} = sc_dif_date_2 ({data_nasc}, “aaaa/mm/dd”, $datahoje, “aaaa-mm-dd”, 2);
{idade} = {data[2]};
}else{
{idade} = 0;
}

Coloquei 02/04/1989 e a idade foi completada com 1.974

“aaaa/mm/dd” não seria “aaaa-mm-dd”?

O ideal é dar echo do campo.

E como eu faço isso George?

Antes do ‘if’

echo('Data nasc.: '.{data_nasc});

Obrigado George.

“Data nasc.: 1989-04-02 00:00:00”

O campo no BD está setado como TIMESTAMP, deveria estar como DATE somente. Ta pegando a hora. Deve ser isso né?

Fiz as alterações aqui mas o problema ainda persiste. Já troquei as datas por aaaammdd, aaaa-mm-dd, yyyymmdd, yyyy-mm-dd e mesmo assim ao colocar a data 02/04/1989 ele completa o campo idade com 1.973

O problema é que o campo é TIMESTAMP.

Eu alterei no banco para DATE e o erro persiste da mesma forma

Post o resultado do echo com o campo na nova definição.

“Data nasc.: 1989-04-02”

Então seu script deve ficar:

// CALCULA IDADE
$datahoje = date(“d-m-Y”);

if(!sc_date_empty({nascimento})){
{data} = sc_dif_date_2 ({nascimento}, “aaaa-mm-dd”, $datahoje, “dd-mm-aaaa”, 2);
{idade} = {data[2]};
}else{
{idade} = 0;
}

Testei aqui e funcionou como deveria.