Foros del Web » Programando para Internet » PHP »

evitar refresh

Estas en el tema de evitar refresh en el foro de PHP en Foros del Web. hola tengo una duda... tengo creado un sistema, cada cosa esta asociada por funcion (ingresar, modificar, validar etc etc) pero por ejemplo tengo esto (resumiendo) ...
  #1 (permalink)  
Antiguo 15/09/2003, 12:22
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
evitar refresh

hola tengo una duda... tengo creado un sistema, cada cosa esta asociada por funcion (ingresar, modificar, validar etc etc)

pero por ejemplo tengo esto (resumiendo)
con un campo hidden me dirigo a cada funcion y despues con switch case me diro a la funcion correspondiente


Código PHP:
function principal($msg,$dato ''){
echo 
$msg;
echo 
"<form method=\"post\" action=\"mismapagina.php\">";
echo 
"<input type=\"text\" name=\"dato\" value=\"$dato\">";
echo 
"<input type=\"hidden\" name=\"func\" value=\"validar\">";
echo 
"<input type=\"submit\" name=\"enviar\" value=\"enviar\">"
echo "</form>";
}
#::
function validar($dato){
  if (!isset(
$dato) or strlen($dato) < 4){
     
principal("dato incompleto",$dato);
     
#si entra envia el mensaje y dato al input pare q pueda ver lo q ingreso
     
    
}
else {
      
grabar($dato);
}
#::
function grabar($dato){
  
#grabo en la bd y direcciono al formulario, no puedo usar header pq tengo etiquetas html antes y me marca errror
  
principal("dato grabado");


bueno despues de la explicacion. el problema q tengo es cuando la persona graba bien y presiona F5 o actualizar me manda el mensaje de explorer si deseo continuar o cancelar con los datos, es decir q me los graba denuevo... (esi si tengo validado q me ingrese datos repetidos), pero no quiero q aparezca q presione f5 y creaa q esta grabando...
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #2 (permalink)  
Antiguo 15/09/2003, 12:34
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
controla la entrada de datos con

if($HTTP_POST_VARS)

de esta manera solo ingresara los datos cuando reciba variables
de un formulario

un saludo
  #3 (permalink)  
Antiguo 15/09/2003, 12:39
 
Fecha de Ingreso: julio-2003
Ubicación: No hay destino
Mensajes: 31
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola, lo ideal, después de grabar datos, ya sea en una base de datos o simples archivos de texto, es redireccionar a otra página, si nesecitas dar un mensaje de gracias o algo parecido, lo haces en esa página y no en la que graba los datos.
  #4 (permalink)  
Antiguo 15/09/2003, 12:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Pues la solucion es redireccionar. GRabas en la base de datos y con un header() redireccionas. Asi no pueden recargar la pagina, porque en ningun momento sabe el navegador cual es.

Y ya veo que pones en el codigo que no puedes usar el header(). Pues me temo que debes replantearte la estructura de la pagina.

Yo normalmente planteo todas las paginas poniendo al comienzo todo el codigo PHP que hace cosas que no tienen que ver con la salida, y luego el HTML y el codigo PHP que genera salida. Es cuestion de ser ordenado. Para grabar en la BD no necesitas ninguna salida.

Como solucion intermedia podrias usar las funciones de buffer de salida (www.php.net/ob_start). Empeora el rendimiento.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 15/09/2003, 13:53
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
yo creo q tienes razon tendre q replantearme la estructura denuevo, ya que hice una especie de plantilla o maqueta, que se trabajaba en el index y segun una variable me enviaba a otra pagina, asi de esa forma el codigo html salia antes de la estructura de php...

asi q hare una estructura nueva y que sea consistente..

gracias...
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
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 10:12.