Ver Mensaje Individual
  #9 (permalink)  
Antiguo 31/12/2009, 13:56
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: algo curioso con las expresiones regulares

Cita:
Iniciado por estibaliz2006 Ver Mensaje
vaya pateketrueke con ayudas como la tuya para que queremos las novatas más verdad? vaya tela
y que tipo de ayuda esperas??


--
¿algo así?, "prueba esto..."
Código PHP:
//si pulsamos el botón enviar del formulario
if(isset($_POST['submit'])) 
{
  
   
// Creamos nombres de variables cortos 
   
$nombre trim$_POST['nombre'] );
   
$cifrest trim$_POST['cifrest '] );

 
// validamos que se hayan enviado los campos  
   
if((!empty($nombre ) ) {

 
//si todos los campos están bien cumplimentados hacemos el ingreso enla base de datos

mysql_query("INSERT INTO alumnos(nombre, cifrest ) VALUES ('$nombre','$cifrest ')");
}
else 
   {
echo 
"<br><div style=\"background-color: #FFFFFF; border: #FFA500 1px solid; padding: 6px;\"><span class=\"text1\">Se han detectado los siguientes errores. Por favor, corríjalos y reenvíe la información</span><br><br>"
      if(empty(
$nombre)) {
         echo 
"<span class=\"text14\">El campo Nombre es obligatorio</span></br>"
         
$nombre$nombre."\" style=\"background-color: #FFE4E1\"";  
         }

//APARTADO ESPECIAL VALIDACION CIF
    //preparación de los datos
    
$cifrest strtoupper($cifrest);
        for (
$i 0$i 9$i ++)
            
$num[$i] = substr($cifrest$i1);     
         
    
//si está vacío el campo devuelve error 
      
if(empty($cifrest)) {
         echo 
"<span class=\"text14\">El campo CIF/NIF es obligatorio</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\"";  
         }
    
//si no tiene un formato valido devuelve error
        
elseif (!empty($cifrest) && !ereg('((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)'$cifrest)) {
         echo 
"<span class=\"text14\">Introduzca un NIF válido</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\"";  
      }    
    
//comprobacion de NIFs estandar
        
if (ereg('(^[0-9]{8}[A-Z]{1}$)'$cifrest))    {
            if (
$num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE'substr($cifrest08) % 231)) {}
            else {
         echo 
"<span class=\"text14\">Introduzca un NIF válido</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\""; } 
            }  
    
//algoritmo para comprobacion de codigos tipo CIF
        
$suma $num[2] + $num[4] + $num[6];
        for (
$i 1$i 8$i += 2)
            
$suma += substr(($num[$i]),0,1) + substr(($num[$i]),1,1);
        
$n 10 substr($sumastrlen($suma) - 11);
    
//comprobacion de NIFs especiales (se calculan como CIFs)
        
if (ereg('^[KLM]{1}'$cifrest)) {
            if (
$num[8] == chr(64 $n)) {}
            else {
         echo 
"<span class=\"text14\">Introduzca un NIF válido</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\""; } 
            }
    
//comprobacion de CIFs
        
if (ereg('^[ABCDEFGHJNPQRSUVW]{1}'$cifrest)) {
            if (
$num[8] == chr(64 $n) || $num[8] == substr($nstrlen($n) - 11)) {}
            else
           {
         echo 
"<span class=\"text14\">Introduzca un CIF válido</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\""; } 
            }  
    
//comprobacion de NIEs
        //T
        
if (ereg('^[T]{1}'$cifrest)) {
            if (
$num[8] == ereg('^[T]{1}[A-Z0-9]{8}$'$cifrest)) {}
             else
           {
         echo 
"<span class=\"text14\">Introduzca un NIE válido</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\""; } 
            }    
        
//XYZ
        
if (ereg('^[XYZ]{1}'$cifrest)) {
            if (
$num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE'substr(str_replace(array('X','Y','Z'), array('0','1','2'), $cifrest), 08) % 231)) {}
             else
           {
         echo 
"<span class=\"text14\">Introduzca un NIE válido</span></br>"
         
$cifrest $cifrest."\" style=\"background-color: #FFE4E1\""; } 
            }    
    
//FINAL APARTADO ESPECIAL VALIDACION CIF

}
//y este es el formulario
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">"
echo 
"Nombre<br><input type=\"text\" name=\"nombre\" class=\"caja\" size=\"50\" value=\"$nombre\"></br>"
echo 
"CIF/NIF<br><input type=\"text\" name=\"cifrest\" class=\"caja\" size=\"50\" value=\"$cifrest\"></br>"
echo 
"<br><input type=\"submit\" name=\"submit\" class=\"caja\" value=\"Enviar\">"
o que tipo de "ayuda"... ¿necesitas??


--
lee bien lo que escribes:
Cita:
no claro...si el tema es el siguiente:

Posibilidades:

1.- Campo nombre vacío y Campo cif vacío----valida y dice que el campo nombre no puede estar vacío y el campo CIF/NIF no puede estar vacío.

2.- Campo nombre vacío y Campo cif erróneo (porque la letra esté equivocada, o haya menos de 9 dígitos o lo que sea)----valida y dice que el campo nombre no puede estar vacío y que se debe introducir un NIF válido.

3.- Campo nombre completo y Campo CIF vacío----valida y dice que el campo CIF/NIF no puede estar vacío.

4.- Campo nombre completo y Campo CIF completo (aunque sea con un NIF/CIF erróneo por erro en la letra o porque sea inferior a 9 dígitos, lo que sea)--No valida el campo CIF y lo registra.

Alguna idea de por qué sucede? yo no veo que falte un paréntesis y sea ese el motivo
como te he dicho, las expresiones no son las del problema... según lo describes es la lógica la que se te complica...

obviamente no tenemos idea de lo que sucede, no somos videntes... por eso te sugieren depurar por tu cuenta....

y lo mejor de todo: el titulo del tema

pues de curioso nada, y de expresiones regulares... menos!!

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.