Foros del Web » Programando para Internet » PHP »

Actualizar registro salvando el usuario y correo propios...

Estas en el tema de Actualizar registro salvando el usuario y correo propios... en el foro de PHP en Foros del Web. Hola tengo un code para actualizar los datos de un registro que actualiza bien..., pero me equivoque en algo grave..., cuando realizas el UPDATE comprueba ...
  #1 (permalink)  
Antiguo 15/02/2007, 21:47
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Actualizar registro salvando el usuario y correo propios...

Hola tengo un code para actualizar los datos de un registro que actualiza bien..., pero me equivoque en algo grave..., cuando realizas el UPDATE comprueba que el usuario y la contraseña sean unicos en toda la bd.., tal como tengo la estructura de mi tabla, el problema es que si el propio usuario solo quiere modificar el usuario o el correo tampoco le deja..., como podría solucionarlo????

pego el code

Código PHP:
if($repita_contrasena==$contrasena){
// una vez validado el formulario comprobamos que no haya ningun registro con el mismo nombre de usuario
$resultado=mysql_query("SELECT * FROM $tabla WHERE usuario='$usuario'"$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$vacio=mysql_num_rows($resultado)==0){
mysql_free_result($resultado);
// una vez validado el formulario comprobamos que no haya ningun registro con el mismo correo
$resultado=mysql_query("SELECT * FROM $tabla WHERE correo='$correo'"$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$vacio=mysql_num_rows($resultado)==0){
mysql_free_result($resultado);
// una vez validado el formulario actualizamos el registro de usuario
$sql="UPDATE $tabla SET nombre='$nombre', apellidos='$apellidos', domicilio='$domicilio', cp='$cp', localidad='$localidad', provincia='$provincia', centro='$centro', telefono='$telefono', correo='$correo', usuario='$usuario', contrasena='$contrasena' WHERE usuario='$usuario_actual' && contrasena='$contrasena_actual'";
mysql_query($sql$conexion) or die("error en la consulta $sql ".mysql_error());
// una vez actualizado el registro de usuario actualizamos los registros de la tabla comunicaciones que comparte campos con la tabla de usuarios
$autor_nuevo=$nombre." ".$apellidos;
$sql="UPDATE $tabla1 SET usuario='$usuario', autor='$autor_nuevo', centro='$centro', correo='$correo' WHERE usuario='$usuario_actual' && correo='$correo_actual'";
mysql_query($sql$conexion) or die("error en la consulta $sql ".mysql_error());
// una vez actualizaos las 2 tablas y creamos las sesiones de usuario nuevas
$sql="SELECT * FROM $tabla WHERE usuario='$usuario' AND contrasena='$contrasena'";
$resultado=mysql_query($sql$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$encontrados=mysql_fetch_array($resultado)){
session_start();
$_SESSION["autenticado"]="acceso";
$_SESSION["usuario"]="{$encontrados['usuario']}";
$_SESSION["contrasena"]="{$encontrados['contrasena']}";
$_SESSION["domicilio"]="{$encontrados['domicilio']}";
$_SESSION["cp"]="{$encontrados['cp']}";
$_SESSION["localidad"]="{$encontrados['localidad']}";
$_SESSION["provincia"]="{$encontrados['provincia']}";
$_SESSION["centro"]="{$encontrados['centro']}";
$_SESSION["telefono"]="{$encontrados['telefono']}";
$_SESSION["correo"]="{$encontrados['correo']}";
$_SESSION["nombre"]="{$encontrados['nombre']}";
$_SESSION["apellidos"]="{$encontrados['apellidos']}";
}
// una vez actualizados los registros redireccionamos al formulario editar el registro
header("Location:modificar_registro.php?mensajegeneral=1"); 
Gracias, un saludo.
  #2 (permalink)  
Antiguo 15/02/2007, 22:24
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 12 años, 10 meses
Puntos: 1
Re: Actualizar registro salvando el usuario y correo propios...

si el usuario es clave no te va a dejar cambiarlo.

saludos
  #3 (permalink)  
Antiguo 15/02/2007, 22:31
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Re: Actualizar registro salvando el usuario y correo propios...

Hola carlosmbrizuela, es un usuario y contraseña normales, de los que se suelen utilizar en cualquier registro, y se suelen poder cambiar siempre, el problema es que no sé mucho de php, y por eso pregunto como suele ser la forma de hacerlo, ya que me puesto yo solo y ahora lo puedo cambiar pero si modifico el usuario y el correo a la vez que son los 2 campos unicos en la base de datos.

¿No sabes como se puede hacer es tipo UPDATE?

Un saludo.
  #4 (permalink)  
Antiguo 15/02/2007, 22:48
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 12 años, 10 meses
Puntos: 1
Re: Actualizar registro salvando el usuario y correo propios...

Viendo tu codigo, creo que no podes preguntar por el usuario y actualizarlo a la ves.
Proba sacando el usuario para ver que pasa.?
Lo que se pregunta en el where es por el ID de la tabla que estas utilizando, no por un campo cualquiera.
  #5 (permalink)  
Antiguo 15/02/2007, 23:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Re: Actualizar registro salvando el usuario y correo propios...

Como sacando el usuario??? podrías explicarte mejor??? o sino que alguien me ayude por favor.

Un saludo.
  #6 (permalink)  
Antiguo 16/02/2007, 07:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Re: Actualizar registro salvando el usuario y correo propios...

Por favor necesito que alguien me eche un cable estoy estancadisimo..., no doy con la forma de hacerlo.

Gracias.
  #7 (permalink)  
Antiguo 16/02/2007, 07:41
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 14 años, 4 meses
Puntos: 6
Re: Actualizar registro salvando el usuario y correo propios...

Código:
SELECT * FROM $tabla WHERE usuario='$usuario'

Tenes que agregarle un filtro para que descarte al usuario que esta haciendo el cambio

Código:
SELECT * FROM $tabla WHERE usuario='$usuario' AND tu_campo_id <> '$el_id_del_usuario_que_quiere_cambiar_algo'

Y lo mismo para el mail.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #8 (permalink)  
Antiguo 16/02/2007, 09:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Re: Actualizar registro salvando el usuario y correo propios...

Me da error con el <> seguro que se puede??

Gracias.
  #9 (permalink)  
Antiguo 16/02/2007, 09:58
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 14 años, 4 meses
Puntos: 6
Re: Actualizar registro salvando el usuario y correo propios...

Si se puede. Muestra la consulta cada vez que tengas una duda... asi te ahorras tiempo...
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #10 (permalink)  
Antiguo 17/02/2007, 13:27
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Re: Actualizar registro salvando el usuario y correo propios...

Fridureiks, con el code que me sugieres me pasa lo mismo..., no deja modificar los datos al propio usuario que intenta modificarlos, a no ser que cambie usuario y correo a la vez, si por ejemplo solo quiere modificar el teléfono, o el nombre o el usuario, le dice que ya está siendo usado por otro usuario.

¿Alguien sabe como podría modificar el siguiente codigo para poder hacerlo?

pego de nuevo el code

Código PHP:
if(ereg("^([a-zA-Z0-9_\.-]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$",$correo)){
if(
strlen($usuario)>=6){
if(
ereg("^[a-zA-Z0-9_\.-]+$"$usuario)){
if(
strlen($contrasena)>=6){
if(
ereg("^[a-zA-Z0-9_\.-]+$"$contrasena)){
if(
$repita_contrasena==$contrasena){
// una vez validado el formulario comprobamos que no haya ningun registro con el mismo nombre de usuario
$resultado=mysql_query("SELECT * FROM $tabla WHERE usuario='$usuario' AND ID<>'$ID'"$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$vacio=mysql_num_rows($resultado)==0){
mysql_free_result($resultado);
// una vez validado el formulario comprobamos que no haya ningun registro con el mismo correo
$resultado=mysql_query("SELECT * FROM $tabla WHERE correo='$correo' AND ID<>'$ID'"$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$vacio=mysql_num_rows($resultado)==0){
mysql_free_result($resultado);
// una vez validado el formulario actualizamos el registro de usuario
$sql="UPDATE $tabla SET nombre='$nombre', apellidos='$apellidos', domicilio='$domicilio', cp='$cp', localidad='$localidad', provincia='$provincia', centro='$centro', telefono='$telefono', correo='$correo', usuario='$usuario', contrasena='$contrasena' WHERE usuario='$usuario_actual' && contrasena='$contrasena_actual'";
mysql_query($sql$conexion) or die("error en la consulta $sql ".mysql_error());
// una vez actualizado el registro de usuario actualizamos los registros de la tabla comunicaciones que comparte campos con la tabla de usuarios
$autor_nuevo=$nombre." ".$apellidos;
$sql="UPDATE $tabla1 SET usuario='$usuario', autor='$autor_nuevo', centro='$centro', correo='$correo' WHERE usuario='$usuario_actual' && correo='$correo_actual'";
mysql_query($sql$conexion) or die("error en la consulta $sql ".mysql_error());
// una vez actualizaos las 2 tablas y creamos las sesiones de usuario nuevas
$sql="SELECT * FROM $tabla WHERE usuario='$usuario' AND contrasena='$contrasena'";
$resultado=mysql_query($sql$conexion) or die ("Error en la consulta, MySQL dice: ".mysql_error());
if(
$encontrados=mysql_fetch_array($resultado)){
session_start(); 
Con que me den la idea me vale, gracias.

Un saludo.
  #11 (permalink)  
Antiguo 18/02/2007, 15:04
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 17 años
Puntos: 2
Re: Actualizar registro salvando el usuario y correo propios...

Hola Fridureiks, llevabas razón..., si que se podía, muchas gracias por la ayuda. Ves el código seguro??? o en que crees que podría mejorarlo para hacerlo más seguro aparte de recortarlo usando elseif.., en vez de tanto if.

Gracias. Un saludo.
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:27.