PHP - FUNCIÓN CALCULO DE LA EDAD

 
Vista:

FUNCIÓN CALCULO DE LA EDAD

Publicado por SILVIA (80 intervenciones) el 09/04/2015 23:14:21
Vuelvo a necesitar vuestra ayuda, en esta ocasión se trata de hacer una función que permita calcular la edad. Os pego el enunciado del ejercicio y mi código para ver si encontrais el error. Gracias de antemano.

A partir de una fecha de nacimiento, calcular la edad en la fecha actual y mostrarla por pantalla. Podeis introducir la fecha de nacimiento en una variable directamente al script o bien con un formulario. También debeis controlar que la fecha que se pase sea coherente (no sea futura, por ejemplo) y correcta. Recordad que podeis utilizar la función date() asi como substr() o también explode(). Para la validación de la fecha os puede ayudar también la función checkdate().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function calculaedad($fechanacimiento){ // Creamos la función calculaedad a la que le pasamos como parámetro $fechanacimiento
    list($any,$mes,$dia)=explode("-",$fechanacimiento); // Asignamos las variables $any, $mes, $dia como si fuera un array y la igualamos a la función explode
    $any=date("Y")-$any; // Le aplicamos a cada variable la función date
    $mes=date("m")-$mes;
    $dia=date("d")-$dia;
    if($dia<0 || $mes<0) $any--)); // $i $dia y $mes son menores que 0 devolvemos $any
    return $any;
}
// Inicio del código
$any=1975; // Inicializamos $any a 1975
$mes=07; // Inicializamos $mes a 07
$dia=17; // Inicializamos $dia a 17
echo 'Actualmente tengo: '; // Texto a mostrar por pantalla
echo calculaedad('1975-07-17');
echo ' años';
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alberto
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

FUNCIÓN CALCULO DE LA EDAD

Publicado por Alberto (351 intervenciones) el 09/04/2015 23:51:42
Hola...

Es bueno que hayas intentado hacerlo por tu cuenta y déjame decirte que la idea la tienes, sin embargo, no esta bien plasmada en el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function calculaedad($fecha){
	$cadena = explode("-",$fecha);
	$año = $cadena[0];
	$añoActual = date("Y");
	if ($año >= $añoActual){
		echo "Ingrese una fecha menor a la actual.";
	} else {
		$edad = $añoActual - $año;
		if ($edad > 1){
			echo "Tengo ".$edad." a&ntilde;os.";
		} else{
			echo "Tengo ".$edad." a&ntilde;o.";
		}
	}
}
echo calculaedad('2010-07-17');

Te explico... Recibes una fecha X con el formato que tu has establecido, efectivamente realizamos un explode ya que el método es perfecto para cadenas que tienen un separador entre sus valores, en esta caso "-", como dicho método devuelve los valores en un arreglo entonces guardamos el valor que nos interesa (Año) en una variable la cual nos servirá para la operación, recordemos que como todo arreglo el indice siempre empieza con el valor 0 y como el año esta en la posición 0, entonces hacemos referencia a dicha posición. Continuamos guardando en otra variable el año actual, para ello hacemos uso del método date() donde le pasamos como parámetro el String correspondiente al año; es decir, "Y". Ahora, es importante saber que el año que se ingreso es menor al año actual por lo primero validamos si el año es mayor o igual al año actual, si se cumple la condición mandamos a imprimir un aviso, si no se cumple; es decir, si el dato ingresado es correcto entonces realizamos el calculo de la edad tal y como puedes ver en la variable edad. Finalmente, solo es cuestión de imprimirlo en pantalla de manera correcta, con esto me refiero a que no es correcto decir tengo 1 años.

Cualquier duda y/o comentario, aquí estamos. Suerte!

P.D. &ntilde; es el código HTML para la letra Ñ de esta forma el navegador lo interpretara de manera correcta y no obtendrás símbolos raros en la salida, como es común cuando escribimos directamente la letra en HTML.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FUNCIÓN CALCULO DE LA EDAD

Publicado por Gabriel Guillen (1 intervención) el 05/10/2017 00:34:20
Muy buen aporte Alberto, solamente una observación, como estas tomando en cuenta solamente el año de la fecha de nacimiento existe la posibilidad de que si la fecha de nacimiento es mayor que la fecha actual la respuesta sea 1 año mayor que el correcto.
Ejemplo:
fecha actual "2017-10-04" fecha de nacimiento "1991-11-20"
la función dirá que tengo 26 años.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public function calcularedad($fecha)
{
	$cadena = explode("-",$fecha);
	$año = $cadena[0];
	$mes = $cadena[1];
	$dia = $cadena[2];
	$añoActual = date("Y");
	$mesActual = date("m");
	$diaActual = date("d");
	if ($año >= $añoActual){
		echo "Ingrese una fecha menor a la actual.";
	} else {
 
		if ($mesActual < $mes)
		{
			$edad = $añoActual - $año -1;
		}
		else
		{
			if($diaActual < $dia)
			{
				$edad = $añoActual - $año -1;
			}
			else
			{
				$edad = $añoActual - $año;
			}
 
		}
 
		if ($edad > 1){
		echo "Tengo ".$edad." años.";
		} else{
		echo "Tengo ".$edad." año.";
		}
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

FUNCIÓN CALCULO DE LA EDAD

Publicado por Alberto (351 intervenciones) el 10/04/2015 18:03:54
Ahora bien, si gustas implementarlo a través de un formulario HTML tal y como dice el enunciado, entonces aquí te espero y con gusto te puedo explicar sin compromiso.

Cualquier duda y/o inconveniente, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FUNCIÓN CALCULO DE LA EDAD

Publicado por SILVIA (80 intervenciones) el 10/04/2015 21:50:16
Te agradecería que me lo expliques.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar