PHP - Formato en input / UPDATE

   
Vista:

Formato en input / UPDATE

Publicado por Kevin (54 intervenciones) el 10/12/2015 05:29:55
Buenas.

Tengo un apartado en mi web donde los usuarios pueden cambiar el nombre de usuario de sus cuentas:

1
<input type="text" class="form-control" name="textNewNAME" placeholder="Nuevo nombre de usuario" required="required" style="width:300px;" >

Está la siguiente restricción:

1
if(preg_match("/^([a-zA-Z]+)_([a-zA-Z]+)/",$_POST['textNewNAME']))

El formato correcto para cambiar tu nombre es <b>Nombre_Apellido</b>, incluye también el guión bajo y recuerda no usar símbolos ni números.
Por lo cual los usuarios deben seguir el siguiente formato: Nombre_Apellido.


Ahora, tengo el siguiente problema. Al cambiar exitosamente el nombre, se ejecuta lo siguiente:

1
$sql = mysql_query("UPDATE smf_members SET real_name='".$_POST['textNewNAME']."',member_name='".$_POST['textNewNAME']."' WHERE real_name='".$_SESSION['USER:NAME']."'");

El problema es que, si en el input los usuarios ponen noMBre_ApeLlido (sin seguir el formato de mayúsculas en las iniciales) después en el UPDATE en los real_name y member_name se verá mal el nombre.

¿Puedo darle una restricción más estricta al input en cuanto al formato que elegí o puedo formatearlo yo al hacer el UPDATE para que quede bien (Nombre_Apellido)? ¿Qué me aconsejarían y cómo podría hacerlo?

Aparte de esto, algo más que intento hacer es lo siguiente. ¿Cómo puedo hacer que, ADEMÁS de cumplir con el formato que mencioné arriba, en real_name se guarde Nombre Apellido en lugar de Nombre_Apellido? (sin el guión)

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de VRM

Formato en input / UPDATE

Publicado por VRM (171 intervenciones) el 10/12/2015 08:48:23
Tienes mal la expresión regular.

Con
1
"/^([a-zA-Z]+)_([a-zA-Z]+)/"
Lo que estás diciendo es que el nombre comience por una o más letras mayúscula o minúscula, seguida de guión bajo, seguido de una o más letras mayúscula o minúscula y termine.

Debes cambiar la expresión por:
1
"/^[A-Z][a-z]*_[A-Z][a-z]*$/"
Si no quieres admitir que ponga sólo la inicial del nombre o del apellido, puedes poner:
1
"/^[A-Z][a-z]+_[A-Z][a-z]+$/"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formato en input / UPDATE

Publicado por Kevin (54 intervenciones) el 10/12/2015 20:25:43
Muchas gracias por tu respuesta.

Usé la siguiente restricción y me sirvió, era justo lo que necesitaba:

1
"/^[A-Z][a-z]*_[A-Z][a-z]*$/"

Ahora, quiero preguntarte lo siguiente. Como bien especifiqué abajo del tema principal, algo más que intento hacer es lo siguiente. ¿Cómo puedo hacer que en real_name se guarde Nombre Apellido en lugar de Nombre_Apellido? Es decir, darle un formato antes del UPDATE al $_SESSION['USER:NAME'] reemplazando el guión por un espacio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de VRM

Formato en input / UPDATE

Publicado por VRM (171 intervenciones) el 11/12/2015 06:21:09
Hola:

Con la función str_replace.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar