Ver Mensaje Individual
  #15 (permalink)  
Antiguo 04/06/2007, 08:35
makeitslow
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Edad exacta con php

Solucionado el problema.

Para obtener los valores seleccionados de un select, solo hay que hacer referencia al indice que se ha seleccionado y a partir de este obtener el valor.

Tenemos un SELECT:
Código PHP:
<select name="mesnaccs" size="1"
<
option value="01">Enero</option
<
option value="02">Febrero</option



</
select
Y para tener su valor en Java Script hacemos lo siguiente:

Código HTML:
var indice = document.form1.mesnaccs.selectedIndex;
var mes = document.form1.mesnaccs.options[indice].value;
De esta forma tenemos en la variable MES el valor del SELECT que hemos escogido.

Bueno, ahora para el que le interese le dejo el codigo y la funcion para CALCULAR AUTOMATICAMENTE E INMEDIATAMENTE LA EDAD A PARTIR DE LA FECHA DE NACIMIENTO HACIENDO UN CLICK EN EL CAMPO.

CONSIDERACIONES:

1. Tenemos 2 MENU SELECT, uno para los dias (diannac) y otro para los meses (mesnac).
2. Tenemos 2 INPUT TEXT, uno para el año de 2 digitos (anonac) y otro para la edad (edad).
3. Todo esta dentro de un formulario (FORM1).

Funcion Java Script que calcula la edad:

Código HTML:
<script language="JavaScript">

function calcular_edad()
{ 
    var indiced = document.form1.dianac.selectedIndex; 
    var dia = document.form1.dianac.options[indiced].value; 

    var indicem = document.form1.mesnac.selectedIndex; 
    var mes = document.form1.mesnacs.options[indicem].value;

    var ano = document.form1.anonac.value; 
    ano = parseInt(ano);
			
    //Calculo la fecha de hoy 
    hoy = new Date(); 
	    
    //El año de la fecha que recibo solo tiene 2 cifras hay que cambiarlo a 4 
    ano = 1900 + ano;

    //Resto los años de las dos fechas 
    //-1 porque no se si ha cumplido años ya este año 
    edad = hoy.getYear()- ano - 1; 
    
    //Si resto los meses y me da menor que 0 entonces no ha cumplido años. 
    //Si da mayor si ha cumplido 
    //+ 1 porque los meses empiezan en 0 
    if ( hoy.getMonth() + 1 - mes < 0) 
       return edad 
	   
    if ( hoy.getMonth() + 1 - mes > 0) 
       return edad+1 

    //Si resto los dias y me da menor que 0 entonces no ha cumplido años. 
    //Si da mayor o igual si ha cumplido 
    if ( hoy.getUTCDate() - dia >= 0) 
       return edad + 1 

    return edad
} 
</script> 
La funcion va al principio, luego vienen los campos SELECT e INPUT TEXT.

El INPUT TEXT para la EDAD tiene que estar asi:

Código PHP:
<input name="edad" type="text" size="5"
onClick="this.form.edad.value=calcular_edad()"
Y listo, cada vez que pongamos una edad escogiendo el dia y el mes de los SELECT y escribiendo los 2 digitos de la fecha de nacimiento, al hacer click en el campo de EDAD aparecera automaticamente la edad que la persona con esa fecha de nacimiento, sin recargar la pagina ni hacer un SUBMIT ni nada.

Podemos tambien poner en lugar de onClick del TEXT INPUT, onFocus, asi no solo se calculara automaticamente al hacer click, si no tambien cuando hagamos TAB o cuando aparezca el cursor en dicho TEXT INPUT.

PD.: Alguien podria borrar mis anteriores mensajes publicados de este tema?? Es que creo que me excedi y redunde mucho preguntando.... Gracias!

Última edición por makeitslow; 05/06/2007 a las 09:00 Razón: Solucion al problema.