Foros del Web » Programando para Internet » PHP »

Refresh graba dos veces en base de datos

Estas en el tema de Refresh graba dos veces en base de datos en el foro de PHP en Foros del Web. Saludos. Tengo una duda y solicito su ayuda. Lo que quiero lograr es que al refrescar una pagina, esta no vuelva a escribir los valores ...
  #1 (permalink)  
Antiguo 15/11/2011, 15:57
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Pregunta Refresh graba dos veces en base de datos

Saludos.
Tengo una duda y solicito su ayuda.
Lo que quiero lograr es que al refrescar una pagina, esta no vuelva a escribir los valores anteriores en la base de datos.

Se trata de una página que esta compuesta de tres elementos:

Un Formulario (action en la misma pagina), la grabación del form en una base de datos y finalmente una consulta a esos datos y la opción de borrar algunos datos.
Lo anterior debido a que el objetivo de la pagina es crear consultas de precios consecutivas.
Explicado de otro modo:
En un formulario se describe el producto, el script hace los cálculos, aun clic lo graba en la base de datos y acto seguido lo muestra mas abajo como un listado.
Todo funciona perfecto excepto que se refresque la pagina.

Aborde el problema a través del borrado del cache del navegador con:

Código PHP:
header ("Expires: Thu, 27 Mar 1980 23:59:00 GMT"); //la pagina expira en una fecha pasada
header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
header ("Pragma: no-cache"); 
Pero no dio resultado. Tampoco sirve destruir la sesion ya que con eso perderia los valores anteriores.
Si alguien tiene una orientación la agradecería muchísimo
__________________
La ciencia al poder. Pazciencia ya viene
  #2 (permalink)  
Antiguo 15/11/2011, 15:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Refresh graba dos veces en base de datos

Lo mejor en esos casos es que al final de hacer tus operaciones de insert, hagas un redirect (con Header) así se borra la cache con los datos originales, y aunque hagan un refresh ya no estarían disponibles y evitarias ese doble insert.

Saludos.
  #3 (permalink)  
Antiguo 15/11/2011, 16:09
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: Refresh graba dos veces en base de datos

GatorV muy agradecido, la solución seria tan fácil como :
Código PHP:
Header("Location: pagina.php"); 
después del insert?
__________________
La ciencia al poder. Pazciencia ya viene
  #4 (permalink)  
Antiguo 15/11/2011, 16:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Refresh graba dos veces en base de datos

Así es, con eso cambias el contexto del browser al nuevo URL lo cual evita que al hacer el refresh pasen esas cosas
  #5 (permalink)  
Antiguo 15/11/2011, 16:19
Avatar de ricardo_tu  
Fecha de Ingreso: noviembre-2010
Ubicación: Mas aca del mas alla
Mensajes: 222
Antigüedad: 14 años
Puntos: 32
Respuesta: Refresh graba dos veces en base de datos

Una vez más; Gracias
__________________
La ciencia al poder. Pazciencia ya viene

Etiquetas: formulario, refresh, veces
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 19:25.