Foros del Web » Programando para Internet » PHP »

generar un numero unico

Estas en el tema de generar un numero unico en el foro de PHP en Foros del Web. Saludos: Bueno tengo un formulario de registro de usuarios, a los mismos internamente hay que generarle un numero de socio entre 0 y 1000, para ...
  #1 (permalink)  
Antiguo 29/03/2007, 15:32
Avatar de lusam  
Fecha de Ingreso: enero-2007
Ubicación: Panamá
Mensajes: 56
Antigüedad: 17 años, 3 meses
Puntos: 0
Sonrisa generar un numero unico

Saludos:

Bueno tengo un formulario de registro de usuarios, a los mismos internamente hay que generarle un numero de socio entre 0 y 1000, para aquello uso un rand, pero llega un momento en que se me repiten los numeros.. y este codigo (numero de socio) debe ser unico.. alguien podria ayudarme?

Código PHP:
srand ((double) microtime( )*1000000);
    
$random_number rand(0,1000);
    
$numsocio $random_number;
    
$busquedamysql_query("SELECT numsocio FROM usuarios WHERE numsocio='$numsocio'");
    if(
mysql_num_rows($busqueda)>0
    {    
srand ((double) microtime( )*1000000);
        
$random_number rand(0,5);
        
$numsocio $random_number;
      
    } else 
    {
           
mysql_query("insert into usuarios (numsocio,name,lastname,observacion) values ( '".$numsocio."','".$name."','".$lastname."','".$observacion."')")or die(mysql_error());
     
    } 
Este es el codigo que uso para ello, pero con ese problema de q se repite los numeros de socio.. les agradezo que me den una manita o me sugieran algo mejor..

gracias mil

Luz
  #2 (permalink)  
Antiguo 29/03/2007, 15:45
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: generar un numero unico

¿Porque no usar un "campo incremental " dentro de tu campo clientes? y de esta forma te ahorrarias tener que estar verficando si ese usuario ya existe.

Saludillos.
  #3 (permalink)  
Antiguo 29/03/2007, 15:47
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Re: generar un numero unico

Una pregunta...

Por que no lo haces simplemente autonumérico y dejas que MySQL se encargue de asignarle el siguiente consecutivo?

Hay varias formas de hacer lo que tu necesitas, pero no visualizo ninguna de ellas que a la vuelta de algún tiempo no termine siendo demasiado demandante de recursos, ya sea de la BD ó de PHP ( o peor, de ambos)...

Ejemplo...

Código PHP:
function nuevorand($lista) {
     
srand ((double) microtime( )*1000000);
     do {
        
$random_number rand(0,1000);
    } while (
in_array($random_number,$lista));
    return 
$random_number;
}

$usados = array();
$busquedamysql_query("SELECT numsocio FROM usuarios");
while(
$fila mysql_fetch_assoc($busqueda)) {
    
$usados[] = $fila["numsocio"];
}
$numsocio nuevorand($usados); 

Repito, debe haber 100 formas de conseguir lo mismo, pero siempre será mejor lo más simple y a prueba de fallos, usa un campo auto:increment en tu tabla, y listo
__________________
Manoloweb
  #4 (permalink)  
Antiguo 29/03/2007, 15:48
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Re: generar un numero unico

Porque no le dices por medio de PHP que si $random_number la funcion se repita hasta que $random_number cree un numero nuevo. xD
  #5 (permalink)  
Antiguo 29/03/2007, 19:54
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Re: generar un numero unico

De hecho la función eso hace
__________________
Manoloweb
  #6 (permalink)  
Antiguo 29/03/2007, 20:25
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Re: generar un numero unico

haaa es que no entiendo lafuncion como esta planteada ay, yo lo aria con else if pero es un pais libre y si pagasimpuestos pues... xD
  #7 (permalink)  
Antiguo 30/03/2007, 13:57
Avatar de lusam  
Fecha de Ingreso: enero-2007
Ubicación: Panamá
Mensajes: 56
Antigüedad: 17 años, 3 meses
Puntos: 0
Sonrisa Re: generar un numero unico

Muy agradecida Manoloweb.. en efecto tu script me ha sido de gran ayuda.

Luz
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:28.