Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/06/2014, 12:50
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: crear codigo digitos y letras

Una solución que elaboré de primera mano y que creo puede mejorarse:

Código PHP:
Ver original
  1. function fn(){
  2.     $num = implode('', range(0, 9));
  3.     $let = implode('', range('A', 'Z'));
  4.     $comb = str_shuffle($num . $let);
  5.     $a = substr($comb, 0, 4);
  6.     $b = substr($comb, 4, 4);
  7.     $c = substr($comb, 7, 4);
  8.     $d = substr($comb, 11, 5);
  9.     return $a . '-' . $b . '-' . $c . '-' . $d;
  10. }
  11.  
  12. echo fn();

Esta función, crea dos arrays; uno compuesto por números del 0 al 9 y el otro compuesto por las letras del abecedario. Uno a los elementos de ambos arrays, convirtiéndolos así en cadenas, concateno a las cadenas resultantes y las desordeno. Finalmente, tomo cuatro porciones de la cadena final, las concateno con guiones y devuelvo el resultado que imprimiré en pantalla.

Para evitar guardar en la BD un código que posiblemente ya exista, deberás realizar la verificación respectiva; si existe, vuelves a generar la cadena hasta que se genere una que no esté almacenada en la BD. Creo que este proceso puede ser más eficiente, de modo que si alguien desea mejorarlo, es libre de hacerlo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand