Foros del Web » Programando para Internet » PHP »

Validar edad segun fecha de nacimiento

Estas en el tema de Validar edad segun fecha de nacimiento en el foro de PHP en Foros del Web. Buenas noches, amigos del foro, necesito que me den una mano respecto a validar la edad segun la fecha de nacimiento, tengo un formulario donde ...
  #1 (permalink)  
Antiguo 26/09/2017, 19:45
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Validar edad segun fecha de nacimiento

Buenas noches, amigos del foro, necesito que me den una mano respecto a validar la edad segun la fecha de nacimiento, tengo un formulario donde creo varios campos dinamicamente y en este creo un campo fecha nacimiento, donde necesito validar que si en uno de esos campos existe una persona mayor de 18 años me muestre un mensaje de error y no se envie el formulario

Estoy tratando de esta manera y solamente me toma el primer campo fecha nacimiento

Código PHP:
Ver original
  1. $edad = edad(date("Y-m-d",strtotime($_POST['fnacfamiliar'][$i])));
  2.         // Entonces
  3.         if($edad>18)
  4.         echo "2";
  5.         exit;
  #2 (permalink)  
Antiguo 26/09/2017, 21:10
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Validar edad segun fecha de nacimiento

muéstranos el código de tu funcion edad, no podemos decirte porque falla si no muestras el código completo. con el cual podamos recrear el problema.
  #3 (permalink)  
Antiguo 27/09/2017, 09:50
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Validar edad segun fecha de nacimiento

Creo que podría ser así

Código PHP:
Ver original
  1. function passAge($p,$edad)
  2.     for($k=0;$k<sizeof($p);$k++){
  3.         if(strtotime($p[$k]) >= strtotime(date("Y-m-d"))-($edad*365*24*60*60)){
  4.         return true;
  5.         }
  6.     }
  7. return false;
  8. }
  9.  
  10. if(!passAge($_POST["fecha_nac"],18)){
  11. //ok
  12. }
  13. else{
  14. //un adulto
  15. }

De todas formas se valida en back, pero como dices "no se envie el formulario" también sería bueno validar en js con más o menos la misma idea

Última edición por alvaro_trewhela; 27/09/2017 a las 09:56
  #4 (permalink)  
Antiguo 27/09/2017, 11:54
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Validar edad segun fecha de nacimiento

@alvaro para conocer la diferencia de fechas se hace con
http://php.net/manual/es/datetime.diff.php
  #5 (permalink)  
Antiguo 27/09/2017, 12:01
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Validar edad segun fecha de nacimiento

Tal vez éste código te pueda ayudar a generar una idea para lo que necesitas

Código PHP:
Ver original
  1. <?php
  2.     $f1 = new DateTime("{$_POST["fnacfamiliar"][$i]}");
  3.     $f2 = new DateTime("now");
  4.  
  5.     $diferencia =  $f1->diff($f2);
  6.     if ($diferencia->format("%y") > 18) {
  7.         echo "mayor de edad";
  8.     } else {
  9.         echo "menor de edad";
  10.     }
  11. ?>

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #6 (permalink)  
Antiguo 27/09/2017, 14:17
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Validar edad segun fecha de nacimiento

Muchas gracias por responder amigo, aqui muestro el codigo completo donde hago la validacion, el problema es el siguiente en el formulario puedo registrar varios familiares y cuando el primero tiene la edad correcta y el segundo no, entonces me hace el registro del primero y no del segundo, no se si me doy a entender, y quisiera es q no me registre ninguno al haber uno con la edad incorrect


Código PHP:
Ver original
  1. public function RegistrarCargaFamiliar()
  2.     {
  3.         self::SetNames();
  4.         if(empty($_POST["codbenef"]) or empty($_POST["dnibenef"]) or empty($_POST["nombenef"]))
  5.         {
  6.             echo "1";
  7.             exit;
  8.         }
  9.            
  10.         for($i=0;$i<count($_POST['nomfamiliar']);$i++){  //recorro el array
  11.         if (!empty($_POST['nomfamiliar'][$i])) {
  12.        
  13.         $f1 = new DateTime($_POST['fnacfamiliar'][$i]);
  14.         $f2 = new DateTime("now");
  15.  
  16.         $diferencia =  $f1->diff($f2);
  17.         if ($_POST["parentescofamiliar"][$i]=="HIJO(A)" && $diferencia->format("%y") >= 21) {
  18.         echo "2";
  19.         exit;
  20.         }
  21.        
  22.         $sql = " select * from cargafamiliar where dnibenef = ? and dnifamiliar = ? and dnifamiliar != ''";
  23.         $stmt = $this->dbh->prepare($sql);
  24.         $stmt->execute( array($_POST["dnibenef"], $_POST["dnifamiliar"][$i]));
  25.         $num = $stmt->rowCount();
  26.         if($num > 0)
  27.         {
  28.            echo "3";
  29.            exit;
  30.            
  31.         } else {
  32.        
  33.         $sql = " select * from cargafamiliar where dnibenef = ? and dnifamiliar != '' and parentescofamiliar = ? and parentescofamiliar = 'CONYUGE'";
  34.         $stmt = $this->dbh->prepare($sql);
  35.         $stmt->execute( array($_POST["dnibenef"], $_POST["parentescofamiliar"][$i]));
  36.         $num = $stmt->rowCount();
  37.         if($num > 0)
  38.         {
  39.            echo "4";
  40.            exit;
  41.            
  42.         } else {
  43.            
  44.           $query = " insert into cargafamiliar values (null, ?, ?, ?, ?, ?, ?); ";
  45.           $stmt = $this->dbh->prepare($query);
  46.           $stmt->bindParam(1, $dnibenef);
  47.           $stmt->bindParam(2, $dnifamiliar);
  48.           $stmt->bindParam(3, $nomfamiliar);
  49.           $stmt->bindParam(4, $parentescofamiliar);
  50.           $stmt->bindParam(5, $fnacfamiliar);
  51.           $stmt->bindParam(6, $fechaingresofamiliar);
  52.        
  53.           $dnibenef = strip_tags($_POST["dnibenef"]);
  54.           $dnifamiliar = strip_tags($_POST['dnifamiliar'][$i]);
  55.           $nomfamiliar = strip_tags($_POST['nomfamiliar'][$i]);
  56.           $parentescofamiliar = strip_tags($_POST['parentescofamiliar'][$i]);
  57.           $fnacfamiliar = strip_tags(date("Y-m-d",strtotime($_POST['fnacfamiliar'][$i])));
  58.           $fechaingresofamiliar = strip_tags(date("Y-m-d"));
  59.           $stmt->execute();
  60.                                                         }
  61.                                                  }
  62.                                         }
  63.                                 }
  64.  
  65.             echo "<div class='alert alert-success'>";
  66.             echo "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button>";
  67.             echo "<span class='fa fa-check-square-o'></span> EL BENEFICIARIO FUE REGISTRADO EXITOSAMENTE";
  68.             echo "</div>";     
  69.             exit;
  70.    }

Etiquetas: edad, fecha, formulario
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 05:29.