Nueva pregunta

Pregunta:

Fecha: 21-03-2018 11:04:29 (En Español)

¿Cómo permitir registrar un usuario solo si esta registrada su cedula en la base de datos?[No resuelta]

Buenas tardes, tengo una consulta, tengo un formulario y registra bien pero quisiera que cuando al meter el número de cedula haga una consulta con la base de datos y si existe pueda realizar el registro . si no existe que me de un mensaje que diga que la cedula no existe . ya de antemano tengo los numero de cedulas registrado en una base de dato. aqui esta mi código y muchas gracias de antemano.

 <?php
    $nombre = $conn->escape_string($_POST['nombre']);
    $apellido = $conn->escape_string($_POST['apellido']);
    $email = $conn->escape_string($_POST['email']);
    $cedula = $conn->escape_string($_POST['cedula']);
    $telefono = $conn->escape_string($_POST['telefono']);
    $banco = $conn->escape_string($_POST['banco']);
    $fecha = $conn->escape_string($_POST['fecha']);
    $hora = $conn->escape_string($_POST['hora']);
    $referencia = $conn->escape_string($_POST['referencia']);
    $monto = $conn->escape_string($_POST['monto']);

  //esto es lo que supongo que que puede ser que me resuelva el problema pero
  // necesito que en ves de darme error me oermita el registro si existe  en mi base de datos
    $resultEmail = $conn->query("SELECT 1 FROM rm_users WHERE username = '$cedula'");
    if($resultEmail->num_rows > 1) {
    $_SESSION['message'] = 'El numero de cedula no esta registrado';
    }
//_________________________________________________________________________________________________
      $resultEmail = $conn->query("SELECT 1 FROM pagos_pagina WHERE referencia = '$referencia'") or die($conn->error());
      if($resultEmail->num_rows > 0) {
          $_SESSION['message'] = 'El numero de referencia ya existe';
      }
      else {
         
            $sql = 
                "INSERT INTO pagos_pagina (
                    nombre, 
                    apellido, 
                    email, 
                    cedula, 
                    telefono,
                    banco,
                    fecha,
                    hora,
                    referencia,
                    monto
                    ) 
                    "."
                    VALUES (
                        '$nombre',
                        '$apellido',
                        '$email',
                        '$cedula',
                        '$telefono',
                        '$banco',
                        '$fecha',
                        '$hora',
                        '$referencia',
                        '$monto'
                )";
                if ($conn->query($sql) === true) {
                    $_SESSION['message'] = 'Su pago a sido registrado correctamente ';
                } else {
                    // Devuelve un mensaje de error
                    $_SESSION['message'] = 'Ocurrio un error al Registrar su Pago';
            }
        }
    

?>
Etiquetas: Base de Datos - MySQL - PHP - Pregunta Votos: 1 - Respuestas: 4 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 21-03-2018 12:31:29 Hola

    Se puede hacer de varias manera, yo expondré una de ellas, a tu codigo le hice unos cambios en su lógica, no he analizado todo el codigo por lo tanto puede fallar. La idea es mostrarte la lógica.

    <?php
        $nombre = $conn->escape_string($_POST['nombre']);
        $apellido = $conn->escape_string($_POST['apellido']);
        $email = $conn->escape_string($_POST['email']);
        $cedula = $conn->escape_string($_POST['cedula']);
        $telefono = $conn->escape_string($_POST['telefono']);
        $banco = $conn->escape_string($_POST['banco']);
        $fecha = $conn->escape_string($_POST['fecha']);
        $hora = $conn->escape_string($_POST['hora']);
        $referencia = $conn->escape_string($_POST['referencia']);
        $monto = $conn->escape_string($_POST['monto']);
    
      //esto es lo que supongo que que puede ser que me resuelva el problema pero
      // necesito que en ves de darme error me oermita el registro si existe  en mi base de datos
        
        $resultEmail = $conn->query("SELECT 1 FROM rm_users WHERE username = '$cedula'");
        if($resultEmail->num_rows == 0) {
            $cedulaExiste =false; // la cedula no existe
            $_SESSION['message'] = 'El numero de cedula no esta registrado';
        }else{
            $cedulaExiste =true; // la cedula existe
        }
    //_________________________________________________________________________________________________
         
         if( $cedulaExiste ==true){ // compruebo si la cedula existe
          $resultEmail = $conn->query("SELECT 1 FROM pagos_pagina WHERE referencia = '$referencia'") or die($conn->error());
          if($resultEmail->num_rows > 0) {
              $_SESSION['message'] = 'El numero de referencia ya existe';
          }
          else {
             
                $sql = 
                    "INSERT INTO pagos_pagina (
                        nombre, 
                        apellido, 
                        email, 
                        cedula, 
                        telefono,
                        banco,
                        fecha,
                        hora,
                        referencia,
                        monto
                        ) 
                        "."
                        VALUES (
                            '$nombre',
                            '$apellido',
                            '$email',
                            '$cedula',
                            '$telefono',
                            '$banco',
                            '$fecha',
                            '$hora',
                            '$referencia',
                            '$monto'
                    )";
                    if ($conn->query($sql) === true) {
                        $_SESSION['message'] = 'Su pago a sido registrado correctamente ';
                    } else {
                        // Devuelve un mensaje de error
                        $_SESSION['message'] = 'Ocurrio un error al Registrar su Pago';
                }
            }
         } // IF  de $cedulaExiste==true
    


    En el mismo codigo he comentado lo que hace, de todas maneras te extiendo la explicación.
    Primero, el primer bloque de codigo, contar la cantidad de registros si da como resultado 0 (Cero) entonces $cedulaExiste = false caso contrario se cumple el }else{ $cedulaExiste =true

        $resultEmail = $conn->query("SELECT 1 FROM rm_users WHERE username = '$cedula'");
        if($resultEmail->num_rows == 0) {
            $cedulaExiste =false; // la cedula no existe
            $_SESSION['message'] = 'El numero de cedula no esta registrado';
        }else{
            $cedulaExiste =true; // la cedula existe
        }
    


    Luego sigue el segundo bloque de codigo, se evalúa if( $cedulaExiste ==true){ // compruebo si la cedula existe si existe la cédula se ejecuta todo el bloque de este if principal, donde están los otros querys.

    Espero que me hayas podido entender el ejemplo.

    Cualquier cosa nos dices.

    Saludos y buen codigo.
      Votos: 3 - Link respuesta
     
  • Fecha: 21-03-2018 20:20:14 Yo iniciaria con ajax en el mismo formulario:

    
    <input type="text" name="cedula" id="cedula"/>
    
    


    $(function(){
        $("#cedula").change(function(){
            var cedula = $(this).val();
    
            $.post('valida.php',{cedula:cedula})
            .done(function(resp){
                if(resp=="200"){
                    $("#boton").removeAttr('disabled');//Activo el botón de enviar
                    alert('La cédula ingresada existe');
                }else{
                    $("#boton").attr('disabled','disabled');//Desactivo el botón de enviar
                    alert('La cédula ingresada no se encuentra en la base de datos');
                }
            })
            .fail(function(err){
                alert('Ha ocurrido un error en la petición, por favor, intente de nuevo');
            })
        })
    })
    


    de esa manera valido mediante ajax si la cedula existe o no, claro esta, esto no implica dejar de validarla en php al momento de recibir los datos, pues jquery podría ser manipulado, o el navegador podría tener desactivado el javascript.
      Votos: 4 - Link respuesta
     
  • Fecha: 22-03-2018 05:11:32 walter sanchez gracias hermano mil mil mil mil un millon de gracias usted es un pro demas eso era lo que exactamente queria demas de bueno me sacastes la pata del barro muchas gracias suoer bine tu explicacion y todo funciono bien . ayer hice unas pruebas y si me consultaba la base de datos y me reconocia la cedula pero no me registraba porque existia y bueno leyendo descubri que se podia hacer pero no sabia el porque ni el como pero gracis de verdad que Dios te bendiga 100pre . y carlos bien tu explicacion muchas gracias tambien.   Votos: 1 - Link respuesta
     
  • Fecha: 24-03-2018 14:13:21 Que bueno que te haya servido. Espero que tambien hayas aprendido.
    Si ya esta resuelta tu pregunta cambiale el estado a RESUELTO.
    Saludos
      Votos: 2 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com