Foros del Web » Programando para Internet » PHP »

Duplicate key de dos campos

Estas en el tema de Duplicate key de dos campos en el foro de PHP en Foros del Web. Buenas tardes a todos, por aca nuevamente; el problema es el siguiente : En una tabla usuarios tengo como clave primaria ID y como campos ...
  #1 (permalink)  
Antiguo 05/05/2008, 08:52
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Duplicate key de dos campos

Buenas tardes a todos, por aca nuevamente; el problema es el siguiente :


En una tabla usuarios tengo como clave primaria ID y como campos de tipo UNIQUE el USUARIO y EMAIL.

Todo lo registro correctamente pero cuando ingreso un usuario o un email que ya esta registrado en la TABLA USUARIOS, me sale el erro de DUPLICATE KEY.

ERROR 1062 Duplicate entry 'xxxxxxxxxxx' for key 1 //Para el USUARIO
ERROR 1062 Duplicate entry 'yyyyyyyyyyy' for key 3 //Para el EMAIL


Ahora este error lo controlo con el error 1062 hasta aqui todo bien, pero quisiera saber EXACTAMENTE como puedo controlar cuando el usuario existe o el email existe, es decir, actualmente lo tengo de la siguiente manera:

if ($codigo_error == 1062 )
{
echo "Puede ser que el USUARIO o el EMAIL ya esten registrados"
}
else
{
insert into .......
}

Como vosotros lo veis, el cliente que se inscribe no sabe si el usuario que esta ingresando, ya existe, o el correo ya existe, por eso quisiera personalizarlo.


El problema es que desconozco como condicionar el if

Quisiera hacerlo mas personalizado de la siguiente manera

if ($codigo_error == 1062 && USUARIO)
{
...echo "El USUARIO ya esta registrado, ingrese otro usuario";
}
else
{
.....if ($codigo_error == 1062 && EMAIL)
.....{
........echo "El EMAIL ya esta registrado, ingrese otro email";
......}
......else
......{
......... insert into .......
.......
.......}
}
Espero haberme dejado entender.

Saludos a todos.
  #2 (permalink)  
Antiguo 05/05/2008, 09:21
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Re: Duplicate key de dos campos

yo opino antes que realices el insert into,
hagas un select, para consultar si el usuario existe o el mail ej:


Código PHP:
$sql "select * from usuarios where nombre = '$valor1' or email = '$valor2'";
if(
mysql_query($sql)){
   echo 
"el usuro o mail ingresado existe en la base";
}else{
  
$sql "insert into .....";

suerte!!
__________________
~~[FiDeLio]~~
  #3 (permalink)  
Antiguo 05/05/2008, 09:46
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Re: Duplicate key de dos campos

ahora tu problema seria...

que pasa si alguien se registra con el mail de cualquier persona y ese mail no es suyo...?

cuando el verdadero propietario quiera registrarse no va a poder, por que ya esta registrado alguien con ese mail....
  #4 (permalink)  
Antiguo 05/05/2008, 09:46
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Duplicate key de dos campos

Tienes razon me habia equivocado al momento de escribir el tema.

Primero realizo el insert ().... y este resultado, si no habido ningun problema de duplicacion lo realizo el insert, pero si no capturo el error con la funcion errno,

Pero vuelvo a repetir como puedo capturar el key para la concatenacion del if, que puse en el tema de color rojo.

Saludos.
  #5 (permalink)  
Antiguo 06/05/2008, 02:13
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Duplicate key de dos campos

Alguien, me puede ayudar con esto de las campos tipo unique...


Gracias
  #6 (permalink)  
Antiguo 06/05/2008, 02:32
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Duplicate key de dos campos

Bueno, yo lo que haria, antes de ningun insert, es preguntar, como ya te han dixo, si ya existen esos campos en la base de datos.

Aunq el query que ha usado .php no lo usaria yo, yo usaria el siguiente :

Código PHP:

// Aqui comprobamos si Encontramos el Email en la base de Datos

$qry mysql_query("Select count(*) from usuarios where email='$email' ") ;
$ncntrado mysql_result($qry,0) ;

if (
$ncntrado != 0)
{
echo 
' El Email ya esta Registrado en la base de datos ' ;
exit() ;
}

// Aqui comprobamos si Encontramos el Nombre en la base de Datos

$qry mysql_query("Select count(*) from usuarios where nombre='$nombre' ") ;
$ncntrado mysql_result($qry,0) ;

if (
$ncntrado != 0)
{
echo 
' El Nombre ya esta Registrado en la base de datos ' ;
exit() ;
}

// Si llega a Esta linea, significa que no ha encontrado ni el nombre, ni el email

mysql_query("Insert into usuarios values ......... ") ; 

la razon por la cual no usaria el codigo de .php es el:

Select *

Para que obtener toda la informacion de un usuario, si solo necesitamos saber si esta ? Ademas, esa consulta devolveria un error de mysql en caso de no encontrar el usuario, mientras que con un

Select Count(*)

Si no lo encuentra, devuelve 0, y si lo encuentra, pues un numero distinto de 0, sin errores de mysql, y encima creo que es mas rapido q obtener cualquier informacion del usuario, aunq fuera solo 1 campo de la tabla


:]
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:47.