Foros del Web » Programando para Internet » PHP »

evitar insertar registros duplicados con insert ignore

Estas en el tema de evitar insertar registros duplicados con insert ignore en el foro de PHP en Foros del Web. Lectores del foro tengo el siguiente problema tengo una tabla donde selecciono ciertos registros a su vez los registros que extraigo debo insertarlos en otra ...
  #1 (permalink)  
Antiguo 22/09/2011, 11:36
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
evitar insertar registros duplicados con insert ignore

Lectores del foro tengo el siguiente problema tengo una tabla donde selecciono ciertos registros a su vez los registros que extraigo debo insertarlos en otra tabla , pero cada vez que hace el insert me duplica los registros al momento de actualizar la pagina este archivo funcionara como una especie de cron que se ejecutara cada cierto tiempo para llenar la tabla , e intentado con insert ignore pero aun asi se siguen duplicando , expongo mi codigo haber si me pueden dar alguna orientación de mi problema ,

Código PHP:
Ver original
  1. $sql = "SELECT lime_questions.sid, lime_questions.gid, lime_questions.qid, lime_questions.title FROM lime_questions";
  2.    $dblink = mysql_connect("localhost","xxx","xxxx"); mysql_select_db("baseA",$dblink);
  3.    $resultado=mysql_query($sql,$dblink)or die(mysql_error());
  4.         while($row = mysql_fetch_array($resultado)) {
  5.                              
  6.             $encuesta=$row['sid'];
  7.             $seccion=$row['gid'];
  8.             $pregunta=$row['qid'];
  9.             $titulo=$row['title'];                         
  10.  
  11.    
  12.     $dblink2 = mysql_connect("localhost","xxx","xxx"); mysql_select_db("baseB",$dblink2);                  
  13.     $sql_inserta="INSERT IGNORE INTO encuestas (sid,gid,qid,title)
  14.                   VALUES ('".$encuesta."','".$seccion."','".$pregunta."','".$titulo."')";
  15.     $resultado_inserta=mysql_query($sql_inserta,$dblink2);
  16. }

saludos y de antemano gracias
  #2 (permalink)  
Antiguo 22/09/2011, 20:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: evitar insertar registros duplicados con insert ignore

al actualizar la pagina guarda los variables y vuelve a enviarlo esto es normal lo que tienes que hacer es cuando guardas los regitros redirecciona el usuario a otra pagina y dee este modo no se duplicara el regitro
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 22/09/2011, 20:53
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: evitar insertar registros duplicados con insert ignore

comparto lo que dice arros lo que puedes hacer es un header de esta forma:
Código PHP:
Ver original
  1. header("location:otraPagina.php");
espero que te sirva.
__________________
Visita a Publiventa donde compras y vendes de todo
  #4 (permalink)  
Antiguo 22/09/2011, 22:07
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: evitar insertar registros duplicados con insert ignore

if(!isset($_COOKIE['entrar_una_vez)){
setcookie("entrar_una_vez", 1, time()+3600*24*30*12);

$sql = "SELECT lime_questions.sid, lime_questions.gid, lime_questions.qid, lime_questions.title FROM lime_questions";
$dblink = mysql_connect("localhost","xxx","xxxx"); mysql_select_db("baseA",$dblink);
$resultado=mysql_query($sql,$dblink)or die(mysql_error());
while($row = mysql_fetch_array($resultado)) {

$encuesta=$row['sid'];
$seccion=$row['gid'];
$pregunta=$row['qid'];
$titulo=$row['title'];


$dblink2 = mysql_connect("localhost","xxx","xxx"); mysql_select_db("baseB",$dblink2);
$sql_inserta="INSERT IGNORE INTO encuestas (sid,gid,qid,title)
VALUES ('".$encuesta."','".$seccion."','".$pregunta."','" .$titulo."')";
$resultado_inserta=mysql_query($sql_inserta,$dblin k2);
}
  #5 (permalink)  
Antiguo 23/09/2011, 07:43
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: evitar insertar registros duplicados con insert ignore

gracias por comentar , hice lo que me indican pero el problema es que al ejecutar nuevamente el archivo me vuelve a ingresar datos repetidos lo que busco es que solo los actualice los nuevos registros .

Saludos
  #6 (permalink)  
Antiguo 23/09/2011, 07:55
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: evitar insertar registros duplicados con insert ignore

amigo no haz hecho lo que te dijimos es asi:

1.- Cuando envias el formulario el formulario va a pagina1.php alli procesas el formulario
2.- Despues que procese el formulario en pagina1.php alli te redireccione a pagina2.php y asi no se va a guardar nuevamente el formulario si actualizan la pagina

Espero tu respuesta
__________________
Visita a Publiventa donde compras y vendes de todo
  #7 (permalink)  
Antiguo 23/09/2011, 07:57
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: evitar insertar registros duplicados con insert ignore

amigo este archivo funcionara como un cron job por lo cual lo ejecutara el servidor , es por ello que e usado lo del insert ignore , con lo que intento solo insertar registros que nose encuentren cada cierta cantidad de horas , nose si pueda haber otra sentencia de mysql que me ayude a lo que quiero .

Saludos

Última edición por matt_1985; 23/09/2011 a las 08:09
  #8 (permalink)  
Antiguo 23/09/2011, 08:12
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: evitar insertar registros duplicados con insert ignore

Bueno amigo lo que te recomiendo es que en la pagina adonde esta el formulario crees una variable de session ej:
Código PHP:
Ver original
  1. $_SESSION['variable'] = "0";//es un decir y si quieres almacena valor
luego en la pagina adonde procesas el formulario haz esto para que no se vuelva a insertar los registro del formulario:
Código PHP:
Ver original
  1. if(isset($_SESSION['variable'])){
  2. unset($_SESSION['variable']);
  3. //tu codigo sql
  4. }
Espero que te sirva.
__________________
Visita a Publiventa donde compras y vendes de todo
  #9 (permalink)  
Antiguo 23/09/2011, 08:18
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: evitar insertar registros duplicados con insert ignore

gustavo pino , al parecer no me e explicado bien este archivo lo primero que hace es hacer un select a una tabla de otra base lo que intento es replicar esta informacion en otra base de datos por lo cual cuando se ejecute solo debe actualizar si ahi nuevos registros .

muy agradecido por tus comentarios

saludos
  #10 (permalink)  
Antiguo 23/09/2011, 09:00
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: evitar insertar registros duplicados con insert ignore

la solucion al final fue armar una llave unica entre los tres valores en este caso sid,gid,qid para que insert ignore funcionara .

saludos y gracias a todos los que me brindaron su ayuda

Etiquetas: duplicados, insert, mysql, registro, registros, sql, 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 07:00.