Hola amigos:
Quisiera generar un código de usuario usando las dos primeras letras de su nombre y 5 números al azar pero no sé como hacerlo.
Pueden darme alguna idea.
Gracias.
| |||
Respuesta: Generar un código de usuario único Pues hacer un rand para generar esos cinco números, pero cabe la remota posibilidad de que coincida con uno generado anteriomente, así que deberías comprobar que no se haya guardado antes, y en caso de coincidir con uno que ya se había guardado... vuelves a generar otro. |
| |||
Respuesta: Generar un código de usuario único Así de un modo rápido: Para sacar las primeras letras del nombre utilza substr: http://es2.php.net/substr Luego generas un número aleatorio con rand: http://es2.php.net/manual/es/function.rand.php Concatenas los dos valores, y haces una consulta a la BDD donde tengas guardados los usuarios (porque están en una BDD, ¿no?) Si se ha devuelto algún valor, volvemos al punto de generar un número aleatorio, concatenar y consultar. Así hasta que no se encuentre otro usuario igual. Y lo guardas en la BDD o donde sea. |
| ||||
Respuesta: Generar un código de usuario único ya yo guardo todos mis datos en una tabla pero me hace falta generar este código de usuario tomando lo que recibo del post: $usuario = $_POST['usuario']; y a esto aplicarle el substr y el rand para guardarlo en el campo de código del usuario. ???? Gracias. |
| |||
Respuesta: Generar un código de usuario único Sí. Supongamos que validas que $usuario sea una cadena correcta y válida. Luego pillas los dos primeros carácteres: $clave = substr($usuario, 0, 2); Generamos el número aleatorio: $num = echo rand(10000, 99999); Se concatenan: $clave .= $num; Y ahora consultas a tu BDD a ver si hay algún usuario con esa clave. Lo ideal sería meter todo esto en un bucle, que se repita hasta que no se encuentren usuarios con esa clave (lo más probable es que NUNCA encuentre ninguno, pero existe la posibilidad) Cuando salga del bucle lo grabas en la BDD. De todos modos... ¿para qué queires hacer esto? ¿No es más fácil dejar a la BDD que genere un número autoincremental cuando añadas el usuario? |
| |||
Respuesta: Generar un código de usuario único Sí, el echo se me coló. ¿Lo has hecho ya? Puedes postear el código para ver si se puede mejorar y para quien lo pueda necesitar. Pero repito lo de antes, si lo que buscas es que cada usuario tenga un ID único, yo lo haría con un campo autonúmerico en la tabla de la BDD. |
| ||||
Respuesta: Generar un código de usuario único El código quedó asi: //se recibe el nombre de usuario $usuario = $_POST['usuario']; //Se toman las dos 1eras letras del nombre $clave = substr($usuario, 0, 2); //Generamos el número aleatorio: $num = rand(10000, 99999); //Se concatenan: $clave .= $num; //Se inserta en la tabla mysql_query("INSERT INTO $tabla (id_usuario) " . "VALUES ('$clave')") or die(mysql_error()); Y listo ![]() |
| |||
Respuesta: Generar un código de usuario único Bueno, eso te funcionará en el 99.99% de los casos. Pero hay una infima posibilidad de que se genere un número aleatorio igual que otro que hay en la BDD y que además los dos primeros carácteres sean iguales.... Tú debes valorar si merece la pena tratar ese caso o no. (realmente no creo que llegase a coincidir con miles de usuarios, pero....) |
| |||
Respuesta: Generar un código de usuario único Ah, y otra cosa, valida siempre lo que venga por POST!!!!! Si hubiese dos espacios en blanco al principio de la cadena pillaría eso y se lo concatenaría a los números... |