Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2008, 06:12
informa
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 5 meses
Puntos: 0
Dudas con un SELECT por edad

Hola: Tengo una Base de Datos MySQL con datos de alumnos, en la que tengo entre otros campos, el nombre de alumno, dia de nacimiento, mes y año.

El problema es que estoy intentando hacer una página de busqueda, en la que pueda elegir mediante opciones <select> una consulta de los alumnos que hay de un grupo de edades determinadas, por ejemplo los que hay entre 10 y 12 años.

He probado varios scripts,pero la consulta me devuelve la edad incorrecta, porque solo me resta los años, pero no tiene en cuenta los que les faltan varios meses para cumplirlos.

La duda que tengo es si se puede hacer la consulta con un script a partir de los campos dia_nacimiento, mes_nacimiento y anio_nacimiento, o es necesario poner un nuevo campo "edad" y modificar la BD antes de hacer la consulta.

La edad si que la se calcular despues de una consulta y me da una variable $edad, pero eso no me permite hacer un SELECT comparandola con ningun campo, ya que ese campo "edad" no existe.

He probado a hacer la consulta con este script, pero no me calcula bien la edad para hacer la consulta:


<HTML>
<HEAD>
<TITLE>Buscar alumnos dede X edad hasta Y edad, a partir del campo f_nacimiento:Año-Mes-Dia</TITLE>
</HEAD>
<BODY>

<?
$fecha_actual= strtotime(date("Y-m-d"));
//Fecha desglosada
$anio_actual=date("Y", $fecha_actual);
$mes_actual=date("m", $fecha_actual);
$dia_actual=date("d", $fecha_actual);

//Edad menor del intervalo buscado, por ejemplo 10 años
$desde_anios='10';
$anio_nacimiento_desde=$anio_actual-$desde_anios;

// aqui me calcula mal el año de nacimiento, si va a cumplir los años en los próximos meses o dias.
$edad_menor="$anio_nacimiento_desde-$mes_actual-$dia_actual";
echo $edad_menor; echo "<br>";


//Edad máxima del intervalo buscado
$hasta_anios='12';
$anio_nacimiento_hasta=$anio_actual-$hasta_anios;
$edad_mayor="$anio_nacimiento_hasta-$mes_actual-$dia_actual";
echo $edad_mayor; echo "<br>";

include ("conexion.php");
$result = mysql_query("select * from alumnos WHERE f_nacimiento>='$edad_menor' AND f_nacimiento<'$edad_mayor'");
while($row = mysql_fetch_array($result)) {//if1
echo $row["alumnos"];echo "<br>";
} // if1
?>
</BODY>
</HTML>

¿Me dais algún consejo?