Foros del Web » Programando para Internet » PHP »

error aleatorio con script "usuario"...

Estas en el tema de error aleatorio con script "usuario"... en el foro de PHP en Foros del Web. Hola foro!!! Tengo un script que genera un nombre de usuario a partir de sus datos personales coge la primera letra de su nombre y ...
  #1 (permalink)  
Antiguo 12/04/2005, 07:53
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 640
Antigüedad: 14 años, 2 meses
Puntos: 2
error aleatorio con script "usuario"...

Hola foro!!!

Tengo un script que genera un nombre de usuario a partir de sus datos personales coge la primera letra de su nombre y el primer apellido y lo une... la cuestión es que de vez en cuando y sin razón aparente en determinados registros deja en blanco el nombre del usuario... a qué se puede deber??

Os pongo a continuación el script:
Código PHP:
switch($name_campo){
    case 
"usuario":
        
$primera=explode(" ",$_POST['nombre']);
        foreach(
$primera as $nom){ $usuario.=substr($nom,0,1); }
        
$segunda=explode(" ",$_POST['apellidos']);
        
$usuario.=$segunda[0];

        
$datos.="'".strtolower($usuario)."',"; break;
    break;

$name_campo contiene el nombre del campo del formulario que envía las variables al llegar al campo usuario realiza ese script para generarlo...

gracias!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #2 (permalink)  
Antiguo 12/04/2005, 08:24
 
Fecha de Ingreso: diciembre-2002
Mensajes: 341
Antigüedad: 15 años
Puntos: 0
Sin conocer el script entero donde esta puesto ese SWITCH es dificil de saber si puede haber algún motivo más, pero te he encontrado este problema evidente:

1) ¿Y si los usuarios separan su nombre y apellido con mas de un espacio?

Puedes solucionar de dos formas:

1) Haciendo trim() a $nom. También sería buena idea que se lo hicieras a a $segunda[0], ya que podría ocurrir que crearas un nombre de usuarios formada por dos palabras.
2) En vez de usar explode(), usa preg_split() de la siguiente forma:
Código PHP:
$primera preg_split('/\s+/'$_POST['nombre']);
$segunda preg_split('/\s+/'$_POST['apellidos']); 
No lo he probado, asi que no grantizo que no de ningún error, pero si lo da te lees la documentación sobre la función preg_split() y lo solucionas :)

Saludos
__________________
guebs - alojamiento web y dominios
www.guebs.com
blog.guebs.com
  #3 (permalink)  
Antiguo 12/04/2005, 08:33
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 640
Antigüedad: 14 años, 2 meses
Puntos: 2
Gracias por responder Argintxe, lo primero que hice fue comprobar lo de los espacio y en éstos casos (5 de 30) no hay ni dobles espacios... ni nombre es compuesto y también lo genera bien... he vuelto a crear otro usuario copiando y pegando los valores de un registro sin "usuario" y ha salido en esta ocasión bien... por lo visto es algo aleatorio... pero probaré lo que me comentas

El código qu eno he incluído no interviene "a priori" en la generación del nombre de usuario ya que es un bucle para generar la consulta que inserte un registro con todos los datos del formulario, pero si crees que puede ser por eso lo envío, no problem ;-D

Gracias y un saludo!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
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 18:19.