Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Posibilidad de comprobar DNI

Estas en el tema de Posibilidad de comprobar DNI en el foro de PHP en Foros del Web. Buenas tardes, quisiera saber si se puede comprobar un dni, pero no como los que hay por ahí de que te VALIDAN, yo lo que ...
  #1 (permalink)  
Antiguo 12/12/2013, 12:08
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Posibilidad de comprobar DNI

Buenas tardes, quisiera saber si se puede comprobar un dni, pero no como los que hay por ahí de que te VALIDAN, yo lo que quiero es que mediante un formulario, introduzcas un DNI y consulte si hay alguno ya en la base de datos, si es así que no deje insertarlo

Ejemplo:

Mediante un formulario introduzco el siguiente DNI: 123456789A, si este ya existe que no inserte o registre y salte un error o algo por el estilo

Saludos y Gracias
  #2 (permalink)  
Antiguo 12/12/2013, 12:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Posibilidad de comprobar DNI

¿La base de datos ya la tienes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/12/2013, 12:27
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Si por, necesita alguna constraint o algo?
  #4 (permalink)  
Antiguo 12/12/2013, 12:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Posibilidad de comprobar DNI

No, sólo que no imagino que te impide resolver el problema.

Que la BD ya la tienes, sólo haces una consulta para comprobar si dicho DNI existe.

¿Ahora que el asunto quieres que lo haga ahí mismo en el formulario sin recargar la pagina?

Bueno, entonces deberías usar algo de AJAX que PHP no es capaz de eso, te sugiero investigar al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 12/12/2013, 12:40
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Buenas, estuve leyendo este articulo del foro:
http://www.forosdelweb.com/f18/compr...ertado-964229/

Donde con mysql_num_rows, tambien me vale, que al enviar, me de el error. Se puede?

Saludos y Gracias
  #6 (permalink)  
Antiguo 12/12/2013, 13:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Posibilidad de comprobar DNI

A ver, déjame probar...




Mmmm... no. La telepatía sigue sin funcionar.

Postea el código de lo que tienes y veremos qué estás haciendo mal, o qué es lo que estás intentando al menos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 12/12/2013, 13:05
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Buenas, aqui el código:


registrate.php
Código HTML:
Ver original
  1. <form action="insertarUsuario.php" name="formularioRegistro" method="post">
  2.                                             <fieldset>
  3.                                                 <legend>Datos de usuarios</legend>
  4.                                                 Nombre: <input type="text" name="nombre"/></br>
  5.                                                 Apellidos: <input type="text" name="apellidos"/></br>
  6.                                                 DNI: <input type="text" name="dni"/></br>
  7.                                                 Dirección: <input type="text" name="direccion"/></br>
  8.                                                 Código Postal: <input type="text" name="cp"/></br>
  9.                                                 Provincia: <input type="text" name="provincia"/></br>
  10.                                                 Email: <input type="text" name="email"/></br>
  11.                                                 Telefono: <input type="text" name="telefono"/></br>
  12.                                                 Usuario: <input type="text" name="nombreUsuario"/></br>
  13.                                                 Password: <input type="password" name="password"/></br>
  14.                                             </fieldset>
  15.                                             <input type="submit" name="sbmtEnviar" value="Enviar"/>
  16.                                             <input type="reset" name="resetBorrar" value="Borrar"/>
  17.                                         </form>
insertarUSuario.php

Código PHP:
Ver original
  1. <?php
  2. //Se inicia la sesion
  3.  
  4. //Se incluyen las funciones necesarias
  5. include ('funciones.php');
  6.  
  7. //Se inserta al usuario
  8. insertarUsuario($_POST['nombre'], $_POST['apellidos'], $_POST['dni'], $_POST['direccion'], $_POST['cp'], $_POST['provincia'], $_POST['email'], $_POST['telefono'], $_POST['nombreUsuario'],$_POST['password']);
  9.  
  10. //Link para volver al principal
  11. echo "<p><a href='index.php'>Volver</a></p>";

funciones.php

Código PHP:
Ver original
  1. function insertarUsuario($nombre,$apellidos,$dni,$direccion,$cp,$provincia,$email,$telefono,$nombreUsuario,$password) {
  2.     if($nombre&&$apellidos&&$dni&&$direccion&&$cp&&$provincia&&$email&&$telefono&&$nombreUsuario&&$password) {
  3.         //Se conecta a la base de datos
  4.         $enlace=conectar_bd();
  5.         //Insertar usuario en la tabla usuarios
  6.         $insertar="INSERT INTO usuarios(idUsuario,nombre,apellidos,cp,provincia,dni,direccion,email,telefono,nombreUsuario,password,comentarios,idTipo) VALUES(' ', '$nombre', '$apellidos', '$dni', '$direccion', '$cp', '$provincia', '$email', '$telefono', '$nombreUsuario','$password','No tienes comentarios',0002)";
  7.         //obtiene el resultado
  8.         $resultado=mysql_query($insertar, $enlace);
  9.         echo "<p>Usuario insertado correctamente.</p>";
  10.  
  11.     }else {
  12.         echo "<p>Error: todos los campos son obligatorios</p>";
  13.     }
  14.  
  15.     mysql_close($enlace); //Cierra la conexión
  16. }
  #8 (permalink)  
Antiguo 12/12/2013, 13:06
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Esto está sin nada, inserta normal, es decir, sin comprobar que el dni ya existe.

Saludos
  #9 (permalink)  
Antiguo 12/12/2013, 13:18
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Posibilidad de comprobar DNI

Ponle una restricción UNIQUE al campo dni de la tabla. Busca cómo capturar e interpretar los errores que ocurran al ejecutar comandos SQL en mysql.
Usa mysqli, mysql está obsoleto hace años.
  #10 (permalink)  
Antiguo 12/12/2013, 13:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Posibilidad de comprobar DNI

Cita:
Iniciado por cristiangd00 Ver Mensaje
Esto está sin nada, inserta normal, es decir, sin comprobar que el dni ya existe.

Saludos
Ajá...


¿Y según tú en qué parte de todo ese código has programado la verificación de si el DNI existe ya en la base?

Porque yo no veo que estér haciendo ninguna validación de ese dato...

Como mínimo, deberías haber puesto ese campo como UK en la base, además de hacer una función de validación previa al INSERT. ¿O crees que la base hará algo que no le digas que haga...?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 12/12/2013, 13:33
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Código PHP:
Ver original
  1. <?  
  2.  
  3. $consulta="select * from usuarios where dni=".$dni;  
  4. $resultado=mysql_query($consulta) or die (mysql_error());  
  5. if (mysql_num_rows($resultado) == 0)  
  6. {  
  7. echo "No existen registros en la base de datos.";  
  8. }?>
  #12 (permalink)  
Antiguo 12/12/2013, 13:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Posibilidad de comprobar DNI

Perfectro, pero... ¿en qué parte de los otros scripts usas esa llamada?
Porque por más que los miro, no veo donde llamas a validar eso.

Es decir, debería estar en esta parte, despues de iniciar, antes de enviar a insertar, y sólo debería insertar si esa funcion devolviense cero registros:
Código PHP:
<?php
//Se inicia la sesion
session_start();
 
//Se incluyen las funciones necesarias
include ('funciones.php');

// acá se debería validar.
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////

//Se inserta al usuario
insertarUsuario($_POST['nombre'], $_POST['apellidos'], $_POST['dni'], $_POST['direccion'], $_POST['cp'], $_POST['provincia'], $_POST['email'], $_POST['telefono'], $_POST['nombreUsuario'],$_POST['password']);
 
//Link para volver al principal
echo "<p><a href='index.php'>Volver</a></p>";
... y no se ve que lo hagas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 12/12/2013, 13:55
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Ya te dije que no lo hacía porque lo tenia quitado, pero en principio lo tenía ahí, para ponerlo ahi. Pero una cosa, al pasar la variable $dni en ese select la cogerá bien, es decir tal cual está ahí?

Saludos
  #14 (permalink)  
Antiguo 12/12/2013, 14:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Posibilidad de comprobar DNI

Cita:
Iniciado por cristiangd00 Ver Mensaje
Ya te dije que no lo hacía porque lo tenia quitado, pero en principio lo tenía ahí, para ponerlo ahi. Pero una cosa, al pasar la variable $dni en ese select la cogerá bien, es decir tal cual está ahí?

Saludos

Y, te puedes imaginar que si primero no pasas el valor del $_POST['dni'] a la variable $dni, jamás contendrá nada, ¿no?

Te recomiendo que SIEMPRE, lo primero que debes hacer es poner TODOS LOS VALORES que usarás en sus respectivas variables.
Manipularlas directamente del $_GET, $_POST o $_SESSION, es una muy mala práctica, porque a la primera que te olvides... no tendrás nada.

Mas o menos por acá:
Código PHP:
 
<?php

//Se inicia la sesion
session_start();
 
//Se incluyen las funciones necesarias
include ('funciones.php');

$nombre $_POST['nombre'];
$apellidos $_POST['apellidos'];
$dni $_POST['dni'];
$direccion $_POST['direccion'];
$cp $_POST['cp'];
$provincia $_POST['provincia'];
$email $_POST['email'];
$telefono $_POST['telefono'];
$nombreUsuario $_POST['nombreUsuario'];
$password $_POST['password'];
 
$consulta "SELECT COUNT(1) existe FROM usuarios WHERE dni=".$dni;  
$result mysql_query($consulta);  

if (
mysql_num_rows($result) == 0)  
    {  
    
//Se inserta al usuario
    
if(!result)
        {echo 
"Error: "mysql_error();}
    else
        {
        
$row mysql_fetch_array($result);
    
        if(
$row['existe'] == 0)
            {
            
insertarUsuario($nombre$apellidos$dni$direccion$cp$provincia$email$telefono$nombreUsuario$password);
    
            
//Link para volver al principal
            
echo "<p><a href='index.php'>Volver</a></p>";
            }
        else{echo 
"El usuario ya existe.";}
        }
    }
    
?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 12/12/2013, 14:35
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Posibilidad de comprobar DNI

Muchas gracias por todo tu tiempo.

Saludos y nos vemos por el foro

Etiquetas: dni, 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 07:21.