Foros del Web » Programando para Internet » PHP »

obtener edad de esta forma???

Estas en el tema de obtener edad de esta forma??? en el foro de PHP en Foros del Web. Bueno primero una saludo a todos los que me lean... Ahora mi problema, he leído varios post donde preguntan como obtener la edad apartar de ...
  #1 (permalink)  
Antiguo 27/08/2008, 14:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: En lo mas profundo de tu alma.
Mensajes: 93
Antigüedad: 20 años, 5 meses
Puntos: 0
obtener edad de esta forma???

Bueno primero una saludo a todos los que me lean...

Ahora mi problema, he leído varios post donde preguntan como obtener la edad apartar de la fecha de nacimiento pero ninguno de los que he leido, logro entenderlo o ajustarlo a mis necesidades.

lo que quiero hacer es lo siguiente a ver si pueden ayudarme se los describiré detalladamente.

En una base de datos echa en mysql tengo una tabla x donde guardo los datos de una persona a través de los siguientes campos.
*codigo int
nombre varchar
apellido varchar
fecha_nacimiento date
edad int

lo que me gustaría hacer es que al ingresar a través de un formulario estos datos hacia la respectiva tabla (hasta aquí no hay problema) al colocar la fecha de nacimiento(en su respectivo campo) me colocara la edad automáticamente(en su respectivo campo comparándola con la fecha actual y siempre que haga una consulta esta(la edad) se mantenga actualizada....

esta es la pagina que contiene el formulario donde se envian los datos:
Código PHP:
<?php require_once('../Connections/modulo_1.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO conductor (cedula, nombre, apellido, fecha_nacimiento, edad) VALUES (%s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['cedula'], "int"),
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['apellido'], "text"),
                       
GetSQLValueString($_POST['fecha_nacimiento'], "date"),
                       
GetSQLValueString($_POST['edad'], "int"));

  
mysql_select_db($database_modulo_1$modulo_1);
  
$Result1 mysql_query($insertSQL$modulo_1) or die(mysql_error());

  
$insertGoTo "../usuario_registrado.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>obtener fecha de nacimiento</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col">&nbsp;</th>
  </tr>
  <tr>
    <th scope="row">&nbsp;</th>
  </tr>
  <tr>
    <th scope="row">&nbsp;
      <form action="<?php echo $editFormAction?>" method="post" name="form1" id="form1">
        <table align="center">
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Cedula:</td>
            <td><input type="text" name="cedula" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Nombre:</td>
            <td><input type="text" name="nombre" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Apellido:</td>
            <td><input type="text" name="apellido" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Fecha de nacimiento:</td>
            <td><input type="text" name="fecha_nacimiento" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Edad:</td>
            <td><input type="text" name="edad" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">&nbsp;</td>
            <td><input type="submit" value="Insertar registro" /></td>
          </tr>
        </table>
        <input type="hidden" name="MM_insert" value="form1" />
      </form>
    <p>&nbsp;</p></th>
  </tr>
  <tr>
    <th scope="row">&nbsp;</th>
  </tr>
</table>
</body>
</html>
Sin mas nada que decirles y esperando su pronta ayuda me despido....

Saludos...
__________________
Los consejos son ayuda, no cabe duda...

Pero no olvides que la solución de nuestros problemas está dentro de nosotros mismos.

C. Torres Pastorino.


Hasta luego..................... :adios:
  #2 (permalink)  
Antiguo 27/08/2008, 14:19
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: obtener edad de esta forma???

Aqui te dejo una funcion que cree hace unos dias:

Código PHP:
function edad($fecha) {
    
$tiempo strtotime($fecha);
    
$ahora time();
    
$edad = ($ahora-$tiempo)/(60*60*24*365);
    
$edad floor($edad);
    return 
$edad;

Esa funcion toma una fecha dada. En tu caso seria la que vas a insertar en la base de datos en formato YYYY-MM-DD
Busca el UNIX TIMESTAMP de dicha fecha (Que son el numero de segundos desde el 1ero de Enero de 1970 hasta la fecha en el campo)
Luego defino una variable llamada $ahora que es el UNIX Timestamp desde el 1ero de Enero hasta el dia de HOY.
Busco la resta de $ahora menos $tiempo ... y lo divido entre 60*60*24*365 osea desde segundos hasta 1 año.
Y luego hago un floor a la fecha. Floor siempre redondea hacia abajo. como sabras no podemos redondear la fecha hasta arriba.

:P Creo que eso es todo.
Puedes usarla de la siguiente manera:
echo edad("2000-1-1");
Lo cual te devolveria 8 :)

Última edición por Ronruby; 27/08/2008 a las 14:25
  #3 (permalink)  
Antiguo 29/08/2008, 13:31
 
Fecha de Ingreso: noviembre-2003
Ubicación: En lo mas profundo de tu alma.
Mensajes: 93
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: obtener edad de esta forma???

Hey muchas gracias tub que documentarme un poco para poder entenderte ya que recien comienzo con php, muchas gracias por la ayuda...
__________________
Los consejos son ayuda, no cabe duda...

Pero no olvides que la solución de nuestros problemas está dentro de nosotros mismos.

C. Torres Pastorino.


Hasta luego..................... :adios:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:46.