miércoles, 29 de junio de 2011

Unificar Documentos de identidad en un solo campo

Luego de varios intentos de registrar en BD documentos de identidad un buen amigo me paso un código que probablemente solucione el tema de unificar criterios en cuanto a números de documentos de identificación para una estructura de datos que contendrá información de personas.. Típico que necesitas registrar en tu aplicación datos personales, incluyendo documentos legales de identificación, normalmente podrías generar un solo campo tipo text para meter ahí lo que sea, o crear diferentes campos para guardar la info del documento de identidad (Cédula de identidad, pasaporte, etc)

Bien hace un tiempo me mandaron esta solución pero no sabia donde la había dejado, la volví a encontrar me pareció interesante y la voy a aplicar en un proyecto nuevo.. prueben este PHP y verifiquen lo generado, la idea es generar un único campo para guardar el dato de la identificación de la persona que se genera...
$str = "V158202995";
echo 'cadena enviada= '.$str;
$arr2 = str_split($str, 1);
foreach ($arr2 as $array):
       echo 'valor= '.$array.' codigo ascii= '.ord($array);
       $asci.=ord($array);
endforeach;
echo 'cadena resultante en codigo ascii= '.$asci;
$asci2 = str_split($asci, 2);
foreach ($asci2 as $array):
       echo 'valor en codigo ascii= '.$array.' valor normal= '.chr($array);
       $asc.=chr($array);
endforeach;
echo 'cadena reconstruida= '.$asc; 

el resultado de lo ejecutado sera asi:
cadena enviada= V158202995
valor= V codigo ascii= 86
valor= 1 codigo ascii= 49
valor= 5 codigo ascii= 53
valor= 8 codigo ascii= 56
valor= 2 codigo ascii= 50
valor= 0 codigo ascii= 48
valor= 2 codigo ascii= 50
valor= 9 codigo ascii= 57
valor= 9 codigo ascii= 57
valor= 5 codigo ascii= 53
cadena resultante en codigo ascii= 86495356504850575753
valor en codigo ascii= 86 valor normal= V
valor en codigo ascii= 49 valor normal= 1
valor en codigo ascii= 53 valor normal= 5
valor en codigo ascii= 56 valor normal= 8
valor en codigo ascii= 50 valor normal= 2
valor en codigo ascii= 48 valor normal= 0
valor en codigo ascii= 50 valor normal= 2
valor en codigo ascii= 57 valor normal= 9
valor en codigo ascii= 57 valor normal= 9
valor en codigo ascii= 53 valor normal= 5
cadena reconstruida= V158202995
Luego se guarda en BD el ascii generado... Podrias generar un metodo para hacer la transformacion y el reverso del numero y lo invocas antes de llamar al metodo save()

Y listo!

No hay comentarios:

Publicar un comentario