Validar edad antes de insertar el registro

  • Autor Autor yoclens
  • Fecha de inicio Fecha de inicio
yoclens

yoclens

Gamma
Diseñador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
saludos comunidad, tengo un problema quiero consultar la edad del usuario para luego proceder al registro ya que es necesario que el usuario sea mayor de edad para poder registrarse de no cumplir con la edad minina no puede registrarse, lo he intentado de esta forma pero siempre me muestra la alerta de ¡ Aviso: no se permiten registros a menores de edad !.. gracias de ante mano.


PHP:
<!-- proceso para registrar-->
<?php
if(isset($_POST['guardar'])){


    if($_POST['pass']!=$_POST['pass2']) { 

               $errMSG = "¡ Ups Aviso: Las Contraseñas deben coincidir !";
                  header("refresh:5;registrarse.php");

 
 }else { 


  $sql = "SELECT cedula FROM usuarios WHERE cedula = :cedula LIMIT 1"; //Creamos la select
  $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  $check->bindParam(':cedula', $_POST['cedula']);//Substituimos las variables de la SELECT
  $check->execute();//Ejecutamos la consulta
  $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  if ($contador > 0) {
  $check->closeCursor();
    
              $errMSG = "¡ Ups Aviso: Este usuario ya se encuentra registrado !";
                  header("refresh:5;registrarse.php");
    }


    //avisame si el nombre de usuario existe
    $sql = "SELECT id_usuarios FROM usuarios WHERE user = :user LIMIT 1"; //Creamos la select
    $user_check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
    $user_check->bindParam(':user', $_POST['user']);
    $user_check->execute();
    if($user_check->rowCount() > 0){
    $user_check->closeCursor();


    $errMSG = "¡ Aviso: El nombre de usuario ya se encuetra registrado !";
    header("refresh:5;registrarse.php");
   

    }

    else


         {


$fecha=$_POST['fecha'];


$sql=$DB_con->prepare("INSERT INTO usuarios (user,pass,idnivel,cedula,nombres,apellidos,fecha_nac,edad,cod,telefono,direccion,id_seguros,id_servicios,observaciones) 
  VALUES (:user,:pass,:idnivel,:cedula,:nombres,:apellidos,:fecha_nac,:edad,:cod,:telefono,:direccion,:id_seguros,:id_servicios,:observaciones)");
$sql->bindParam(':user', $_POST['user']);
$sql->bindParam(':pass', $_POST['pass']);
$sql->bindParam(':idnivel', $_POST['idnivel']);
$sql->bindParam(':cedula', $_POST['cedula']);
$sql->bindParam(':nombres', $_POST['nombres']);
$sql->bindParam(':apellidos', $_POST['apellidos']);
$sql->bindParam(':fecha_nac', $_POST['fecha_nac']);
$sql->bindParam(':edad', $_POST['edad']);
$sql->bindParam(':cod', $_POST['cod']);
$sql->bindParam(':telefono', $_POST['telefono']);
$sql->bindParam(':direccion', $_POST['direccion']);
$sql->bindParam(':id_seguros', $_POST['id_seguros']);
$sql->bindParam(':id_servicios', $_POST['id_servicios']);
$sql->bindParam(':observaciones', $_POST['observaciones']);
$sql->execute();
   }

if(($fecha) < 18 ){
    
      $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
           header("refresh:5;registrarse.php");

}else{

     $successMSG ="¡ Bien Hecho: Usuario registrado correctamente !";
                header("refresh:5;login.php");

            }

       }
  }
?>
<!-- fin proceso para registrar-->
 
$_POST['fecha'] es la edad o es la fecha de nacimiento? Si es la fecha de nacimiento, que formato tiene?
 
Hola! [MENTION=169703]yoclens[/MENTION]

Podés utilizar una función para calcular los días de diferencia entre la fecha de nacimiento y la fecha del día

function diferenciaDias($inicio, $fin)
{
$inicio = strtotime($inicio);
$fin = strtotime($fin);
$dif = $fin - $inicio;
$diasFalt = (( ( $dif / 60 ) / 60 ) / 24);
return ceil($diasFalt);
}

$inicio = "2009/04/17";
$fin = "2009/04/30";

print diferenciaDias($inicio, $fin);

Vos lo necesitás en años, podrías adaptar ese codigo o el resultado dividirlo por 365

:encouragement:
 
gracias amigo pude solucionarlo mil gracias por su colaboración anexo el código como debería quedar

PHP:
<!-- proceso para registrar-->
<?php
if(isset($_POST['guardar'])){



 if($_POST['pass']!=$_POST['pass2']) { 

               $errMSG = "¡ Ups Aviso: Las Contraseñas deben coincidir !";
                  header("refresh:5;registrarse.php");

 
 }else{ 


  $sql = "SELECT cedula FROM usuarios WHERE cedula = :cedula LIMIT 1"; //Creamos la select
  $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  $check->bindParam(':cedula', $_POST['cedula']);//Substituimos las variables de la SELECT
  $check->execute();//Ejecutamos la consulta
  $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  if ($contador > 0) {
  $check->closeCursor();
    
              $errMSG = "¡ Ups Aviso: Este usuario ya se encuentra registrado !";
                  header("refresh:5;registrarse.php");

    }else{


  $sql = "SELECT user FROM usuarios WHERE user = :user LIMIT 1"; //Creamos la select
  $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  $check->bindParam(':user', $_POST['user']);//Substituimos las variables de la SELECT
  $check->execute();//Ejecutamos la consulta
  $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  if ($contador > 0) {
  $check->closeCursor();
    
              $errMSG = "¡ Aviso: El nombre de usuario ya se encuetra registrado !";
                  header("refresh:5;registrarse.php");

        }else{



    $edad=$_POST['edad'];
 
 
    if(($edad) < 18 ){
    
             $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
               header("refresh:5;registrarse.php");
 
         
         }else{


$sql=$DB_con->prepare("INSERT INTO usuarios (user,pass,idnivel,cedula,nombres,apellidos,fecha_nac,edad,cod,telefono,direccion,id_seguros,id_servicios,observaciones) 
  VALUES (:user,:pass,:idnivel,:cedula,:nombres,:apellidos,:fecha_nac,:edad,:cod,:telefono,:direccion,:id_seguros,:id_servicios,:observaciones)");
$sql->bindParam(':user', $_POST['user']);
$sql->bindParam(':pass', $_POST['pass']);
$sql->bindParam(':idnivel', $_POST['idnivel']);
$sql->bindParam(':cedula', $_POST['cedula']);
$sql->bindParam(':nombres', $_POST['nombres']);
$sql->bindParam(':apellidos', $_POST['apellidos']);
$sql->bindParam(':fecha_nac', $_POST['fecha_nac']);
$sql->bindParam(':edad', $_POST['edad']);
$sql->bindParam(':cod', $_POST['cod']);
$sql->bindParam(':telefono', $_POST['telefono']);
$sql->bindParam(':direccion', $_POST['direccion']);
$sql->bindParam(':id_seguros', $_POST['id_seguros']);
$sql->bindParam(':id_servicios', $_POST['id_servicios']);
$sql->bindParam(':observaciones', $_POST['observaciones']);
$sql->execute();

          $successMSG ="¡ Bien Hecho: Usuario registrado correctamente !";
                header("refresh:5;login.php");
            
                  } 
          
              }
          }
      }

  }
?>
<!-- fin proceso para registrar-->
 
Buen aporte amigo, te aseguro que hay muchos con el mismo o parecido problema.🙂
 
muchas gracias amigo :encouragement:
 
Atrás
Arriba