Foros del Web » Programando para Internet » PHP »

Error: Duplicate entry 'dato1' for key 3

Estas en el tema de Error: Duplicate entry 'dato1' for key 3 en el foro de PHP en Foros del Web. Hola, tengo esta duda: Tengo un formulario, con varios campos, los cuales se guardan en la base de datos. En la base de datos tengo ...
  #1 (permalink)  
Antiguo 16/05/2009, 12:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Pregunta Error: Duplicate entry 'dato1' for key 3

Hola, tengo esta duda:

Tengo un formulario, con varios campos, los cuales se guardan en la base de datos.
En la base de datos tengo una tabla tambien con varios campos, uno de ellos tiene valor unico es decir que los datos ingresados no pueden repetirse...

El problema está en que cuando por ejemplo el usuario ingresa datos en los campos de texto y presiona el boton de enviar, los datos se guardan perfectamente en la base de datos, PERO los datos quedan en el formulario y si el usuario presiona de nuevo el boton de enviar, el sript envia nuevamente los datos, pero como uno de los campos tiene valores unicos me dá el siguiente error Duplicate entry 'dato1' for key 3 Osea que la pagina se pone en blanco y me dá ese error...

Lo que quiero saber es si puedo reemplazar ese error por una leyenda que diga por ej LOS DATOS NO PUEDEN REENVIARSE o algo por el estilo, o si puedo redirigirlo hacia otra pagina...

Ya usé el siguiente comando para borrar los datos del formulario, lo que pasa es que la pagina se queda en esa y yo quiero que se dirija hacia otra

header('Location:l' );

Si uso header('Location:' . $_SERVER['PHP_SELF']); no me funciona me dá error 404 o algo asi

desde ya muchas gracias....
  #2 (permalink)  
Antiguo 16/05/2009, 12:32
 
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 100
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Error: Duplicate entry 'dato1' for key 3

Hombre puedes personalizar el error siempre con un try catch o create una pagina 404 personalizada

de todas maneras lo que estas haciendo es recuperar un error mysql_error()

$q=" insert into tal pascual" ;
$rs = execute($q) or die(aqui tu funion) por ejemplo function_redireccion(mysql_error());

function_redireccion(){
echo "error en la insert lo que tu quieras poner";
echo "<script>location.href = 'donde quiero ir.extension'; </script>";
}
  #3 (permalink)  
Antiguo 16/05/2009, 12:42
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
De acuerdo Respuesta: Error: Duplicate entry 'dato1' for key 3

graxiax maestro.. lo pruevo y te digo, aunque soy novato y no entiendo mucho lo que pusiste ahí arriba, lo voy a investigar y analizar bien... gracias
  #4 (permalink)  
Antiguo 16/05/2009, 12:53
 
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 100
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Error: Duplicate entry 'dato1' for key 3

me explico tu quieres que si te da un error en la insert te salga un mensaje o una redireccion personaliada.

PHP tiene una funcion mysql_error() que te da el mensaje de error y te sale el duplicate tal pascual ok, vamos a personalizarlo

en tu or die "si muere textualmente or_die(mensaje_personalizado());

ok ahora creamos la funcion

funtion mensaje_personalizado(){
//aqui dentro lo que quieras hacer
echo "un mensaje";
echo "<script>alert('un alert javascript con redirecion'); location.href = 'index.php'</script>";
//lo que quieras vamos
}
  #5 (permalink)  
Antiguo 16/05/2009, 23:38
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
De acuerdo Respuesta: Error: Duplicate entry 'dato1' for key 3

Muchisimas gracias muchachos lo entendí perfectamente y funcionó...

Al principio no me funcionaba y me volví loco, era porque en el ej que publicó "gdecaceresr" , envez de decir function dice funtion, eso me pasó por copiar y pegar tendré que acostumbrarme a escribir todo sin copiar y paste.....

Saludos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:08.