Foros del Web » Programando para Internet » PHP »

Ayuda con con los update

Estas en el tema de Ayuda con con los update en el foro de PHP en Foros del Web. Código PHP: function  quitar ( $mensaje ) { $mensaje  =  str_replace ( "<" , "&lt;" , $mensaje ); $mensaje  =  str_replace ( ">" , "&gt;" ...
  #1 (permalink)  
Antiguo 31/01/2003, 12:03
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
Ayuda con con los update

Código PHP:
function quitar($mensaje)
{
$mensaje str_replace("<","&lt;",$mensaje);
$mensaje str_replace(">","&gt;",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"&quot;",$mensaje);
$mensaje str_replace("\\\\","\",$mensaje);
return 
$mensaje;
}
if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$sql "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result mysql_query($sql);
if(
$row mysql_fetch_array($result))
{
echo 
"Error, nick escogido por otro usuario";
}
else
{
$sql="UPDATE usuarios SET nick='$nick',password='$password',nombre='$nombre',pais='$pais',email='$email',apellidos='$apellidos',empresa='$empresa',direccion='$direccion',provincia='$provincia',cp='$cp',dominio='$dominio',plan='$plan',costom='$costom',costot='$costot',costoa='$costoa',tiempo='$tiempo',caract='$caract' WHERE id=$id";
$result mysql_query($sql); 
echo 
"<font face=tahoma size=2><img src=imagenes/images/72.gif>Informacion cambiada con exito!<br><br><a href=panel.php><img src=imagenes/images/7.gif border=0>Inicio</a></font>";
}
mysql_free_result($result);

else
{
echo 
"Debe llenar como minimo los campos de nick y password para ser un usuario valido.";

Este script me cambia los datos pero si no cambio el nick me dice que el nick lo tiene otro usuario yo entiendo por que:
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
la duda es como cambiar los datos pero sin que me muestrel mensaje de nick escogido por otro usuario y al mismo tiempo me revise que no este ocupado.
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #2 (permalink)  
Antiguo 31/01/2003, 12:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sería mejor que comprendieses que hace ese script .. sobre todo como funcionan los condicionales "IF .. else ..." ..

Tan solo es quitar esa consulta q se hace y su correspondiente condicional que hace para ver si hay coincidencias .. (El if($row=mysql_xxx .. devuelve FALSE si la consulta ha arraojado 0 registros ..)

Código PHP:
$sql "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result mysql_query($sql);
if(
$row mysql_fetch_array($result))
{
echo 
"Error, nick escogido por otro usuario";
}
else
}

Y el } despues de:

Código PHP:
echo "<font face=tahoma size=2><img src=imagenes/images/72.gif>Informacion cambiada con exito!<br><br><a href=panel.php> ....
} // quitalo 
Un saludo,
  #3 (permalink)  
Antiguo 31/01/2003, 17:02
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
Al quitar esas lineas si cambio el nick por uno ya utilizado los datos se convinan y se crea un error al tratar de entrar a la cuenta.
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #4 (permalink)  
Antiguo 31/01/2003, 17:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tu quieres que se actualice siempre que ese nick no lo tenga cogido otro usuario. Pero solo compruebas si el nick existe. Por lo que si no modifica el nick ese nick ya existe.

La solucion consiste en preguntar si existe algun usuario que tenga ese nick Y QUE NO SEA EL USUARIO QUE ESTA MODIFICANDO LOS DATOS. ¿Que como haces esto? Muy facil, usando el campo id, que identifica a cada usuario.

Espero que con esto ya lo puedas solucionar. Es que no me gusta dar codigo. Prefiero que lo encuentres tu, ya que es un error de logica, no de PHP.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 31/01/2003, 17:16
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
creeme que lo intente, al momento de enviarl form para que se edite la informacion(perfil) se envia el numero da la id.
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #6 (permalink)  
Antiguo 31/01/2003, 17:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Volvamos a intentarlo.

Consulta a la base de datos cuantos usuarios (id) tienen el nick y no son el usuario (id) que lo esta cambiando.

Esa es la consulta SQL que debes hacer.

Tambien lo podrias hacer mirando de los usuarios (id) que te ha devuelto la consulta, si hay alguno que no sea el usuario (id) que esta modificando su perfil.

Intentalo otra vez, y si no lo consigues te doy el codigo.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 31/01/2003, 17:46
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
de alguna forma me funciono esto:
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."' LIKE $nick ";

pero supongo que no es lo que se debo hacer por que se cambia el nick aunque ya haya uno con el mismo nick
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #8 (permalink)  
Antiguo 31/01/2003, 17:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Creo que esa consulta SQL que has puesto ni siquiera es valida.

Bueno, como prometi aqui va la solucion (creo) definitiva:
Código PHP:
$sql="SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS['nick'])."' AND id <> $id"
Suponiendo que en $id este el id del usuario que esta modificando su perfil. Traducido al castellano, esta consulta es "selecciona los id de todos los registros de la tabla usuarios cuyo nick sea igual al nick del formulario y que el id no sea igual al id del usuario que esta modificando su perfil". Con esta consulta no se selecciona el usuario que esta modificando el perfil en caso de que no modifique el nick.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 31/01/2003, 18:03
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
OOOOO gran josemi perdona mi estupides yo ser novato tu maestro gracias hermano, no tenia conocimiento acerca de id <> $id, gracias
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
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 00:35.