Como pesquisar por faixa de idade???
Oi, pessoal!
Estou tentando criar uma busca dentro de um banco de dados que me retorne os usuários dentro de uma certa faixa de idade (de 20 a 30 anos, por exemplo).
As idades estão armazenadas no banco na forma da data de nascimento da pessoa (dd/mm/aaaa). O select ficou assim:
$busca = "SELECT Data_nascimento FROM membros WHERE idade LIKE '%$pidade%'";
A variável pidade vem do formulário de busca (input name="pidade").
Dessa forma, a idade nem é calculada por faixa, e sim, por um único número inserido no formulário, mas eu só fiz isso pra testar, por enquanto.
Para calcular a idade em número a partir da data de nascimento, usei o seguinte script no WHILE:
while ($linha = mysql_fetch_array($resultado)) {
$idade = $linha ["Data_nascimento"];
if ($idade!="") {
function calculaDia($iMes, $iDia, $iAno) {
$iTimeStamp = (mktime(0,0,0) - 86400) - mktime(0, 0, 0, $iMes, $iDia, $iAno);
$iDias = $iTimeStamp / 86400;
$iAnos = floor($iDias);
$iAnos = $iAnos / 365;
return intval($iAnos);
}
$data=$idade;
$ndata=explode("/",$data);
$idade2 = calculaDia($ndata[1],$ndata[0],$ndata[2]);
}
}
Aí a busca funcionou, mas o problema é que ela me retorna somente um membro com a idade buscada, e não todos. Quando há mais de um, retorna a seguinte mensagem:
Fatal error: Cannot redeclare calculadia() (previously declared in E:\Home Pages\membros\pesquisa.php:197) in E:\Home Pages\membros\pesquisa.php on line 197
Pensei em uma solução, que seria criar no banco de dados uma coluna "idade", que calculasse a idade em números a partir da data de nascimento no momento da inserção dos dados, depois puxasse diretamente esse número na consulta. Mas aí, essa idade ficaria gravada estática no banco, e não mudaria de acordo com a passagem dos anos, certo?? :blink:
Alguém tem uma idéia do que eu posso fazer para que essa busca funcione? Ou algum tutorial específico para esse tipo de dúvida (busca por informações de usuários em um banco de dados, no estilo de um site de encontros)?
Agradeço qualquer ajuda!
Discussão (21)
Carregando comentários...