Foros del Web » Programando para Internet » PHP »

ayuda creando codigo unico

Estas en el tema de ayuda creando codigo unico en el foro de PHP en Foros del Web. buenas a todos, tengo que generar un numero de pedido, que sea unico, para ir almacenando pedidos en mi base de datos. habia generado un ...
  #1 (permalink)  
Antiguo 20/11/2009, 19:09
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
ayuda creando codigo unico

buenas a todos,

tengo que generar un numero de pedido, que sea unico, para ir almacenando pedidos en mi base de datos. habia generado un codigo con la fecha y la hora con los segundos, pero me he dado cuenta que con 2 pc, actualizando a la vez, puede darse el caso de que se genere el mismo numero.

hago lo siguiente:

Código:
$fecha= date("mdyHis")
$order=$fecha;
necesito generar un numero de pedido de 12 caracteres. habia hecho lo de la fecha, pero pueden coincidir 2 a la vez.. puede pasar!! ponia la fecha para tener algun tipo de referencia.

alguien puede darme alguna pista de como generar un codigo unico??

saludos!
  #2 (permalink)  
Antiguo 20/11/2009, 19:21
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: ayuda creando codigo unico

Hola FerranWEB.

Para lo que quieres hacer hay varios métodos.

El primero es incluir en el código el nombre de usuario (o varias letras del nombre de usuario) del solicitante del pedido.

Al ser único el nombre de usuario, no tendrías ese problema, esto sería así:
Código PHP:
//Cogemos la sesión del usuario
$usuario $_SESSION['user'];
//Creamos un número aleatorio
$rand rand(100000999999);
//Acortamos el nombre de usuario a las 3 primeras letras
$acortar substr ($usuario03); 
//creamos el número de pedido.
$orden $acortar $rand $fecha
otro método sería comprobar mediante la base de datos si el número ya existe. Y el siguiente sería realizarlo por ID del pedido.

Un saludo y espero haberte ayudado.
  #3 (permalink)  
Antiguo 20/11/2009, 19:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 20
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: ayuda creando codigo unico

Tambien puedes usar la función time()

Código PHP:
$nombre_fichero "nombre_".time().".txt";
echo 
$nombre_fichero
time() devuelve el instante UNIX, y es un dato muy útil para futuro tratamiento de estadísticas.
Si vas a generar mas de uno por segundo, usa microtime(), que devuelve el tiempo en milisegundos.

Otra cosa que puedes hacer es esto:

Código PHP:
$hash base64_encode(strval(time()));
$hash substr($hash011);
$nombre_fichero "nombre_".$hash.".txt"
base64_encode() genera una serie de caracteres que, cortados, pueden servirte como ID único.

Un saludo.
  #4 (permalink)  
Antiguo 20/11/2009, 19:26
 
Fecha de Ingreso: julio-2009
Ubicación: En mi casa
Mensajes: 48
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: ayuda creando codigo unico

se me ocurre una solucion :) nose la funcion que necesites pero te daré la logica de mi idea:
con la fecha y los segundos y eso puedes hacer que aparezcan 8 números y le sumas un segundo valor random que iría del 1 al 100... osea 8 números serán de fecha y segundos ( tendrías que buscar si dia o mes y año, o mes y año, etc etc) y le agregas los otros 4 dígitos que necesitas(: así te quedarían 12 números totalmente distintos ya que si dos usuarios ejecutan el programa a la vez seria demasiada suerte la tuya que saliera dos números iguales.

ahora mientras mas grande el rango de tu random mas posibilidades hay que el numero no se repita,... esa es mi idea.
__________________
buscamee y sigueme ;) www.twitter.com/gruiz92
  #5 (permalink)  
Antiguo 20/11/2009, 20:36
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: ayuda creando codigo unico

g3rz0n, esa es la solución que le he expuesto en el mensaje anterior.
  #6 (permalink)  
Antiguo 21/11/2009, 11:28
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda creando codigo unico

gracias a todos por vuestras respuestas y ayuda!! de todos he sacado el siguiente nº de pedido


Código:
    $fecha = date("dmy");   
    $random = rand(100000, 999999);
    $acortar = substr ($random, 0, 6); 
    $pedido = $fecha.$acortar;
y esto me genera un nº pedido tal que asi:

211109736462

no puedo utilizar el nº de pedido. el nº de pedido que tengo en la bd empieza des del 0, 1, ... pero ese no es el problema. el problema es que primero genero el nº de pedido, mando a la pasarela de pago y guardo si me da OK.

creeis que puedo llegar a tener problemas con el nº pedido? puede darse el caso de que se genere el mismo codigo? no podria tener 2 nº de pedido iguales...

que podria hacer para asegurarme que no podra darse el caso??

saludos
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 14:32.