Foros del Web » Programando para Internet » PHP »

Validación compleja

Estas en el tema de Validación compleja en el foro de PHP en Foros del Web. Hola, tengo un gran problema con una validación que debo hacer, aqui les pongo el escenario Tabla 1: Empleados del Estado Tabla 2: Listado de ...
  #1 (permalink)  
Antiguo 20/10/2005, 19:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Exclamación Validación compleja

Hola, tengo un gran problema con una validación que debo hacer, aqui les pongo el escenario

Tabla 1: Empleados del Estado
Tabla 2: Listado de RNC (como la cedula de una compañia)
Tabla 3: Accionistas

Tengo un sistema de registros de contratos y debo hacer la siguiente validación, al momento de yo poner un número de RNC, el sistema irá a la Tabla 2, buscará el o los accionistas de este RNC y verificará que ese número de cédula de este accionista no aparezca en la Tabla 1, si aparece entonces debe advertirlo el sistema. Donde el asunto se pone complejo es que puede que el accionista sea una compañia y en el campo aparezca en vez de un RNC (9 numeros) una cedula (11 numeros) y si aparece un RNC entonces debo correr el mismo proceso y así sucesivamente. Donde se complica es que en cada paso que voy dando pueden aparecer RNC y Cedulas a la vez, si es cedula la valida y si es rnc entonces continua mas adentro, pero se complica aun mas porque puede que entrando y entrando me encuentre con un rnc que ya habia sido validado y entonces el sistema se quede redundando en lo mismo y no termine nunca... quien me puede ayudar en este caso?

Hipólito
  #2 (permalink)  
Antiguo 20/10/2005, 19:57
 
Fecha de Ingreso: octubre-2005
Mensajes: 15
Antigüedad: 12 años, 1 mes
Puntos: 0
Si usas MySQL u otro buen sabor de SQL, un simple SELECT bien redactado con los JOINT adecuados te daria la respuesta, pero tus datos son insuficientes.
  #3 (permalink)  
Antiguo 20/10/2005, 20:00
Avatar de santidc  
Fecha de Ingreso: enero-2005
Mensajes: 88
Antigüedad: 12 años, 11 meses
Puntos: 1
Maestro lo lei 2 veces y no te entendi mucho, no se si ya a esta hora estare quemado o que cosa.

Pero si vos queres antes de agregar algo a una base de datos algo primero tenes que consultar si hay algun registro que en su campo X tenga el dato que quieren agregar, esto te va a devolver algo o no y de ahi con la funcion isset() la cual pregunta si la variable esta vacia o no metes un if y listo.

algo asi:


$consulta=mysql_query("select id from usuarios where nick = '".$nick."' limit 1") or die(mysql_error());
$respuesta=mysql_fetch_row($consulta);
if(isset($respuesta[0])){
print("el usuario existe");
}
else{ print("El usuario no existe puedes agregarlo"); }

Bueno maestro espero haberte sido claro por mas que a veces ni yo me entiendo ejjejejejjeje un saludo chau chau

SantiDC
__________________
SantiDC
-------------------------------------
www.pedilo.com
un mundo de publicaciones gratis
  #4 (permalink)  
Antiguo 20/10/2005, 20:20
 
Fecha de Ingreso: enero-2005
Mensajes: 11
Antigüedad: 12 años, 10 meses
Puntos: 0
a parte de las 3 tablas que tienes.
Crea 2 tablas :
TASOC (para asociados)-ponle ides para futuras consultas.
TEMP (para empleados) –ponle u id para futuras consultas.

Variable qrnc ( se refiere al rnc que ingresas)
Por orden
Crea una consulta
Select $nombre from TASOC where $qrnc es igual al $rnc de la tabla. TASOC
Si obtienes resultado ok. Ahí muere.
Si es NO:
Crea una consulta en TEMP
Select $nombre from Tasoc where $qrnc es igual al $rnc de la tabla TEMP
Si es SI. Muere.
Si es NO
Crea la consulta a la tabla Asociados.
Select nombre fron Asociados donde qrnc es igual a rnc de la tabla.
Obtienes el “nombre”
Si es No. Muere.
Si es SI:
Cuentas el numero de digitos del rnc
Si es 9 ENTONCES pasas todas las variables del “nombre” a la tabla TASOC
Si es 11 pasa todas la variables del “nombre” a la tabla TEMP.

Para esto ya no es necesario el mensaje de advertencia cada vez que hagas la consulta por tu rnc. Y estarán separados tanto empleados como asociados.

Espero que me hallas entendido y espero que esto te ayude.

Ojo: lo de contar los caracteres no sé cómo se hace. Yo tengo un problema parecido, pero me falta código.
  #5 (permalink)  
Antiguo 21/10/2005, 05:19
 
Fecha de Ingreso: octubre-2005
Mensajes: 15
Antigüedad: 12 años, 1 mes
Puntos: 0
Contar caracteres mysql tiene la funcion
CHAR_LENGTH(str) o LENGTH(str)

CHAR_LENGTH(str) Returns the length of the string str, measured in characters.
A multi-byte character counts as a single character.
This means that for a string containing five two-byte characters,
LENGTH() returns 10, whereas CHAR_LENGTH() returns
5.
E insisto no hace falta tanto codigo y tantas queries, un solo SELECT es capaz. Yo consultaria la bibliografia e MySQL o en su defecto intentaria usar un constructor e consultas como EMS.
  #6 (permalink)  
Antiguo 21/10/2005, 16:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Un detalle que se me olvidó decirles... es MS-SQL, no MySQL.
Voy a verificar sus respuestas detalladamente a ver....
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 11:17.