Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2011, 01:29
albertrc
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 9 meses
Puntos: 1
validacion preg_match y expressiones regulares

Ayuda con validación

tengo hecho un formulario con los campos dni,nombre,1 apellido, 2 apellido
Código PHP:
Ver original
  1. if(isset($_POST['submit'])){
  2.         $validacion_numero_dni = "/[0-9]{8}/";
  3.                 if(!preg_match($validacion_numero_dni, $dni_numero)){
  4.                      echo 'Introduzca el numero del dni ex: 22446688<br/>';
  5.             }
  6.  
  7.          $validacion_nombre = "/[a-z]{2,15}/";
  8.                 if(!preg_match($validacion_nombre, $nombre)){
  9.                      echo 'Introduzca el nombre ex: Jose<br/>';
  10.             }
  11.  
  12.              $validacion_primer_apellido = "/[a-z]{2,25}/";
  13.                 if(!preg_match($validacion_primer_apellido, $primer_apellido)){
  14.                      echo 'Introduzca el primer apellido ex: Sanchez<br/>';
  15.             }
  16.              $validacion_segundo_apellido = "/[a-z]{2,25}/";
  17.                 if(!preg_match($validacion_segundo_apellido, $segundo_apellido)){
  18.                      echo ' Introduzca el segundo apellido ex: Sanchez<br/>';
  19.             }
  20.   }
  21.  
  22.  
  23. <form action="formulari_de_registro.php" method="post">
  24. <label for="dni">Dni: *</label><br/>
  25.             <input type="text" name="dni_numero" value="<?php if(isset($dni_numero)) echo $dni_numero ?>" size="8" maxlength="8"/>
  26.  
  27. <label for="nombre">Nombre: *</label><br/>
  28.             <input type="text" name="nombre" value="<?php if(isset($nombre)) echo $nombre ?>" size="15" maxlength="15"/><br/>
  29.  
  30.             <label for="primer_apellido">Primer Apellido: *</label><br/>
  31.             <input type="text" name="primer_apellido" value="<?php if(isset($primer_apellido)) echo $primer_apellido ?>" size="25" maxlength="25"/><br/>
  32.  
  33.             <label for="segundo_apellido">Segundo Apellido: *</label><br/>
  34.             <input type="text" name="segundo_apellido" value="<?php if(isset($segundo_apellido)) echo $segundo_apellido ?>" size="25" maxlength="25"/><br/><br/><br/><br/>
  35.  <input type="submit" name="submit" value="submit"/><br/>
  36.    
  37.         </form>
  38.  
  39.  
  40.          $hostname="";
  41.       $user="";
  42.       $password="";
  43.       $database="";
  44.  
  45.       $link = mysqli_connect($hostname,$user,$password,$database);
  46.       $dni_numero =  $_POST["dni_numero"];
  47.       $nombre =  $_POST["nombre"];
  48.       $primer_apellido =  $_POST["primer_apellido"];
  49.       $segundo_apellido =  $_POST["segundo_apellido"];
  50.  
  51.       $query_insert =
  52.       "INSERT INTO usuarios (dni,nombre,primer_apellido,segundo_apellido)
  53.        VALUES(
  54.                " . $dni_numero . "," .
  55.                "\"".   $nombre .  "\"," .
  56.               "\"". $primer_apellido . "\"," .
  57.               "\"". $segundo_apellido . "\"
  58.             );";
  59.        $result_insert = mysqli_query($link,$query_insert) or die (mysqli_error($link));




si introduzco un 1 en el campo dni ya me hace el insert me añade los 7 numeros siguientes 10000000 yo quiero que el usuario tenga que introducir los 8 números el
la validación de nombre tampoco funciona si pongo un 1 el nombre sera 1 yo quiero que el nombre puede tener entre 2 o 15 caracteres a-z, los apellidos pasa exactamente lo mismo

tengo otro problema si lo hago todo en el mismo documento cada vez tengo que rellenar todos los campos si tengo algún campo mal, y quiero poner mas campos 15 o 20 mas

si lo hago en dos ficheros se me conservan los valores en los input pero no me muestra ningún mensaje de error

en definitiva tengo 3 problemas
validación
conservar datos en los input
mostrar mensaje de error

también he tenido que escapar el nombre y apellidos no se si lo he hecho de la mejor forma en el insert