Foros del Web » Programando para Internet » PHP »

se puede hacer $query excluyendo un valor?

Estas en el tema de se puede hacer $query excluyendo un valor? en el foro de PHP en Foros del Web. Hola! Estoy haciendo un formulario donde el usuario se registra. Valido que el login introducido y el e-mail no estén ya en la DB. El ...
  #1 (permalink)  
Antiguo 12/11/2007, 02:40
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
se puede hacer $query excluyendo un valor?

Hola!
Estoy haciendo un formulario donde el usuario se registra. Valido que el login introducido y el e-mail no estén ya en la DB.
El problema viene cuando, una vez registrado, quiere modificar el perfil.
como hago para mirar, una vez mas, que no repita ningun login o password, excluyendo el suyo?
Claro, el usuario puede haber modificado su contrasenya pero no tocar ni login ni password. Entonces siempre me debolvería que ya existe.
mi pregunta es si se puede hacer esto, o algo parecido:

$buscar=mysql_query("SELECT * FROM usuarios WHERE login LIKE '$login' OR mail LIKE '$mail' AND id_usuario NOT LIKE '$id' ", $link);

gracias por adelantado!
  #2 (permalink)  
Antiguo 12/11/2007, 03:16
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: se puede hacer $query excluyendo un valor?

Puedes hacer algo como eso asi:
Código PHP:
SELECT *
FROM usuarios
WHERE login 
'$login'
OR mail '$mail'
AND id_usuario NOT IN (SELECT id_usuario FROM usuarios WHERE login '$login' OR mail '$mail'
Prueba y nos comentas.

Suerte
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 12/11/2007, 03:35
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

muchas gracias Marvin!!

funcionó
  #4 (permalink)  
Antiguo 12/11/2007, 03:39
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

...perdón. no funciona al 100%
Detecta que si usa la dirección de otra persona te manda error.
pero si simplemente modifico el password, me dice que la dirección y el login ya existen..

jops
  #5 (permalink)  
Antiguo 12/11/2007, 03:52
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: se puede hacer $query excluyendo un valor?

Sip... se supone que la consulta sirve para la creacion de un usuario, pero si quieres actualizar al usuario, tomas los datos de el usuario en cuestion y los pones en una consulta de tipo UPDATE:
Código PHP:
UPDATE usuarios
SET campo 
'nuevo valor',
otrocampo 'otro nuevovalor'
WHERE id_usuario '$id_usuario' 
Y si quieres saber si el password o algun dato existe ya en la base de datos, lo que haces es un select antes de esto que te de la data siempre y cuando id_usuario no sea el mismo. De esa manera si encuentra algo no lo hace y si no lo encuentra, hace el update.

Suerte
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 12/11/2007, 03:55
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

si si, creo que la "teoria" la entendí.
pero como hago para decirle que me busque si existen login y mail excluyendo id_usuario = 1 (por ejemplo)

Es eso lo que no se hacer :(

Gracias de nuevo
  #7 (permalink)  
Antiguo 12/11/2007, 11:32
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: se puede hacer $query excluyendo un valor?

Haces un select para saber si existe o no y luego el update:
Código PHP:
$cont 0;
$sql "SELECT *
        FROM usuarios
        WHERE login = '$login'
        OR mail = '$mail'
        AND id_usuario <> 1"
;
$result mysql_query($sql);
while(
$data mysql_fetch_array($result)){
    
$cont++;
}

if(
$cont 0){
    
//el mail o login ya existe
}else{
    
//aca el update

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 12/11/2007, 13:51
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

Hola de nuevo.

Probé el codigo pero aún no funciona. Si que funciona cuando escribo la dirección de otro usuario registrado, pero si tansolo cambio la contraseña me dice que ya existe.

te paso el código para que lo veas, alomejor es cosa mía.

Código PHP:
$name=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$mail=$_POST['mail'];
$login=$_POST['login'];
$password=$_POST['password'];

$cont 0
$sql "SELECT * FROM usuarios WHERE login = '$login' OR mail = '$mail' AND id_usuario <> 1"
$result mysql_query($sql); 
while(
$data mysql_fetch_array($result)){ 
    
$cont++; 

if(
$cont 0){ 
        echo 
"<br><br><div align='center'><table width='290' border='0' cellspacing='0' cellpadding='0' align='center' class='text'>";
        echo 
"<tr><td><div align='center' class='info'><br><br><p>este login o email ya existe</p><br><div align='right'><a href='javascript:history.back()'>volver atras</a></div></td></tr>";
}else{ 
        
$actualiza=mysql_query("UPDATE usuarios SET nombre='$name', apellidos='$apellidos, mail='$mail', login= '$login', password= '$password' WHERE id_usuario LIKE '$id'"$link);

Gracias otra vez
  #9 (permalink)  
Antiguo 12/11/2007, 14:19
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: se puede hacer $query excluyendo un valor?

Código PHP:
//cuando el usuario inicia sesion deberías obtener el id del usuario en una variable de sesión

//entonces aquí lo recuperas, para luego colocarlo en la sentencia sql que te pasó Marvin
$id $_SESSION['usuario_id'];

$name=$_POST['nombre']; 
$apellidos=$_POST['apellidos']; 
$mail=$_POST['mail']; 
$login=$_POST['login']; 
$password=$_POST['password']; 

$cont 0;  
$sql "SELECT * FROM usuarios WHERE login = '$login' OR mail = '$mail' AND id_usuario <> $id";  
$result mysql_query($sql);  

//cuento los registros encontrados
$data mysql_num_rows($result);

if(
$cont 0){  
        echo 
"<br><br><div align='center'><table width='290' border='0' cellspacing='0' cellpadding='0' align='center' class='text'>"
        echo 
"<tr><td><div align='center' class='info'><br><br><p>este login o email ya existe</p><br><div align='right'><a href='javascript:history.back()'>volver atras</a></div></td></tr>"
}else{  
        
$actualiza=mysql_query("UPDATE usuarios SET nombre='$name', apellidos='$apellidos, mail='$mail', login= '$login', password= '$password' WHERE id_usuario LIKE '$id'"$link); 

  #10 (permalink)  
Antiguo 12/11/2007, 15:25
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

No hay manera...

Antes me olvidé de poner lo del $id. ($id= $_SESSION['identificador'];)
Eso ya lo tenía, y también había probado de sustituir el 1 por $id.

Con el cambio de
Código PHP:
$data mysql_num_rows($result); 

if(
$cont 0){ 
por

Código PHP:
while($data mysql_fetch_array($result)){  
    
$cont++;  
}  
if(
$cont 0){ 
ahora ni me detecta que ya existía esa direccion/login.
Me he fijado en una cosa.. Con el cambio que me ha hecho deet, el contador siempre será 0. Debe faltar alguna linea no?

bufff que lío!
  #11 (permalink)  
Antiguo 12/11/2007, 15:28
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: se puede hacer $query excluyendo un valor?

sry me confundí con el nombre de la variable, sería así:

$cont = mysql_num_rows($result);

if($cont > 0){
  #12 (permalink)  
Antiguo 12/11/2007, 15:57
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

No lo entiendo, no funciona.

Os paso el código entero aunque está en catalan. espero que eso no sea un problema

Código PHP:
<?php include ("security.php"); 
$quies$_SESSION['login_usuari'];
$nom$_SESSION['nom_usuari'];
$id$_SESSION['identificador'];
$link=mysql_connect("...","...""...");
mysql_select_db("..."$link);
//dades enviades
$name=$_POST['noms'];
$cognoms=$_POST['cognoms'];
$mail=$_POST['mail'];
$login=$_POST['login'];
$password=$_POST['password'];
//comprobo que no hagi canviat dades que ja hi fossin en un altre usuari
$cont 0
$sql "SELECT * FROM usuaris WHERE login = '$login' OR mail = '$mail' AND id_usuari <> '$id'"
$result mysql_query($sql); 
$cont mysql_num_rows($result); 
if (
$cont 0){
        echo 
"<br><br><div align='center'><table width='290' border='0' cellspacing='0' cellpadding='0' align='center' class='text'>";
        echo 
"<tr><td><div align='center' class='info'><br><br><p>aquest login o direcció de correu ja estàn utilitzats</p><br><div align='right'><a href='javascript:history.back()'>tornar enrera</a></div></td></tr>";
}else{ 
        
$actualitza=mysql_query("UPDATE usuaris SET nom='$name', cognoms='$cognoms', mail='$mail', login= '$login', password= '$password' WHERE id_usuari LIKE '$id'"$link);
}  
?>
<html>
<head>
<title>Log in</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="css/estils_popup.css" rel="stylesheet" type="text/css">
</head>
</html>
y la tabla usuarios es:

nombre de la tabla-> usuaris
campos-> id_usuari, nom, cognoms, mail, login, password

si necesitarais traducir algo no tengo ningun problema en hacerlo.

y una vez más...gracias!
  #13 (permalink)  
Antiguo 13/11/2007, 07:42
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: se puede hacer $query excluyendo un valor?

prueba con esta sentencia, con esta te tiene que funcionar:

Código PHP:
$sql "SELECT * FROM usuarios WHERE (login = '$login' OR mail = '$mail') AND id_usuario <> $id"
si te fijas he encapsulado las condicionales que estan antes y despues de OR esto me asegura de que busque por: si encuentra un login o un email igual al recibido ademas de eso tiene que ser distinto al ID del usuario.

si no lo encapsulamos puede tomar algo asi como: que el login sea correcto ó el mail sea correcto y el ID usuario sea diferente.
  #14 (permalink)  
Antiguo 13/11/2007, 12:21
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: se puede hacer $query excluyendo un valor?

Por fin!!!

ya funciona, muchisimas gracias por las molestias :)
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 06:30.