Foros del Web » Programando para Internet » PHP »

validar dni

Estas en el tema de validar dni en el foro de PHP en Foros del Web. -la validación no me termina de funcionar del todo bien si pongo un 1 me pone 7 0 detrás 1 - 10000000 17 - 17000000 ...
  #1 (permalink)  
Antiguo 07/07/2011, 13:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
validar dni

-la validación no me termina de funcionar del todo bien si pongo un 1 me pone 7 0 detrás
1 - 10000000
17 - 17000000
sale el mensaje de error pero me rellena el campo
-si introduzco lo 8 números me desaparece el mensaje de error pero no me introduce los 8 números en la tabla
que es lo que hago mal

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.         <title></title>
  5.     </head>
  6.     <body>


Código PHP:
Ver original
  1. <?php
  2.        
  3.   if(isset($_POST['submit'])){
  4.         $validacion_numero_dni = "/[0-9]{8}/";
  5.                 if(!preg_match($validacion_numero_dni, $_POST['dni_numero'])){
  6.                 $dni_numero = (int) $_POST['dni_numero'];
  7.                      echo 'Introduzca el numero de dni ex: 22446688<br/>';
  8.             }
  9.   }
  10. ?>
Código PHP:
* Campos Obligatorios
        <form action="formulario_de_registro.php" method="post">



            <label for="dni">Dni: *</label><br/>
            <input type="text" name="dni_numero" value="<?php if(isset($dni_numero)) echo $dni_numero ?>" size="8" maxlength="8"/><br/>


            <input type="submit" name="submit" value="submit"/><br/>

        </form>


                 <?php

         $hostname
="";
      
$user="";
      
$password="";
      
$database="";

      
$link mysqli_connect($hostname,$user,$password,$database);


      
$query_insert =
      
"INSERT INTO usuaris (dni)
       VALUES(
  $dni_numero 
      
            );"
;
            echo 
$query_insert;
       
$result_insert mysqli_query($link,$query_insert) ;

en la base de datos el campo es
dni INT(8) UNSIGNED ZEROFILL NOT NULL,
  #2 (permalink)  
Antiguo 07/07/2011, 14:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: validar dni

El problema es que en tu base de datos tienes el campo como ZEROFILL por eso te rellena con 0s.
  #3 (permalink)  
Antiguo 07/07/2011, 23:10
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validar dni

gracias gatorV ya he quietado el campo zerofill



si no pongo nada no me pone ningún cero

pero si pongo un 1 o un 12 me hace el insert aunque arriba me sale el mensaje de error
en cambio si pongo los 8 dígitos no me hace el insert y no me sale el mensaje de error
que es lo que no hago bien

tendría que ser el revés si pongo 8 dígitos me rellenara el campo
y si pongo un 1 no me haga el insert

he probado después de [0-9]
poner {8} que sea obligatorio poner 8 dígitos y
esta otra variante {8,8}


---------------------------------------------------------------------------------------------------------------------
con respecto al primer mensaje del foro
si pongo $dni_numero = $_POST["dni_numero"]; entre

$link = mysqli_connect($hostname,$user,$password,$database );
$dni_numero = $_POST["dni_numero"];

$query_insert =

puedo introducir el dni de 8 dígitos pero si entro un 1 también me rellena el campo

Última edición por albertrc; 07/07/2011 a las 23:25
  #4 (permalink)  
Antiguo 08/07/2011, 03:44
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: validar dni

descargate un codigo javascript q se llama vanadium.js, te descargas jquery y lo unico q tienes q hacer es decirle cuantos numeros kieres q se puedan meter y listo, ya controla el cualkier excepcion q no sea los 9 numeros de un dni
  #5 (permalink)  
Antiguo 08/07/2011, 03:45
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: validar dni

te dejo el link y asi ves como funciona www.vanadiumjs.com

este codigo vale para controlar cualkier validacion, ya sea tipo email, contraseña, solo numeros caracteres etc
  #6 (permalink)  
Antiguo 08/07/2011, 05:35
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validar dni

te agradezco tu ayuda y tiempo viringas
pero prefiero hacer poco código y entenderlo que utilizar código que no he hecho yo
ademas quiero hacer la validación con php que es mas seguro que en javascript
seguro que en el foro hay alguien que me podrá ayudar

muchas veces haces preguntas y me contestan otras
  #7 (permalink)  
Antiguo 08/07/2011, 05:40
f0n
 
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 1
Respuesta: validar dni

No entiendo por qué no te tendría que hacer el insert, ahí si encuentras un fallo escribes que hay un fallo, no evitas en ningún modo la inserción :S
  #8 (permalink)  
Antiguo 08/07/2011, 05:42
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: validar dni

Deberías separar el insert del form...


Segun lo q has puesto, tienes algo así


ArchivoX.php
Código:
<header>
<php unas pocas sentencias para recuperar el valor del dni>
<formulario>
<insert dni>
Y deberia ser algo así
Código:
<header>
<¿he enviado el formulario?>
       <en caso afirmativo, trato el formulario>
       <¿es correcto?>
                  <inserto en la base de datos>
        <¿no es correcto?>
                   <mensaje de error>
                    <muestro el form>
<¿no lo he enviado?>
<muestro el formulario>
Sino, por ejemplo, cuando abras el formulario intentará hacer un insert
  #9 (permalink)  
Antiguo 08/07/2011, 08:38
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: validar dni

Concuerdo con Eleazan, pero además podrías mejorar muchísimo tú código si realmente quieres validar un DNI ya que sólo validas que sea numérico...
¿Entonces si yo agrego 8 números eso es un DNI correcto?

Deberías tener en cuenta el NIF, es decir la letra y ver sí se corresponde al número.
Se explica en multitud de páginas y es un ejercicio habitual de programación cuando se empieza y para aprender a usar "mod" --> % .

Por cierto, si estás en españa y lo estás validando para algo SERIO, recuerda que hay 2 tipos de NIF, para los nacionalizados y para los extranjeros no nacionalizados, Letra X, y que dada la extensa inmigración la normativa cambió, existiendo ahora también la Letra Y. (además va al principio)

Depende de lo serio que quieras hacer tu validador de DNI, pero usando la letra, aunque no puedas saber si pertenece al usuario, al menos sí que compruebas que dicho DNI es válido.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Etiquetas: dni, html, mysql, tabla, 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 12:29.