[Php-avanzado] Consulta
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Mar Mar 23 11:29:42 ART 2010
Hola Leandro,
El mar, 23-03-2010 a las 04:31 +0000, Leandro Schereik escribió:
> Hola a todos una consulta para hacer: tengo dos paginas una es
> abm_categ.php en la que llamo a alta_categ.php por medio de un
> include.
> La idea es realizar altas de categorias pero cuando inserto y luego
> actualizo la pagina con F5 sigue tratando de insertar
> no lo hace por que lo controlo con un if, pero me sigue saliendo el
> mensaje por pantalla "La categoria ya esta dada de alta en el
> sistema."
>
> ¿Al tener if (isset($_GET["sub_categ"]) no tendria que entrar solo si
> esta seteado el boton sub_categ y no emitir el mensaje:"La categoria
> ya esta dada de alta en el sistema."?
Sí, tendría, pero el navegador al presionar F5 no solo recarga la
página, sino que vuelve a enviar los datos de formularios (más que
"recargar", sería "repetir", y por tanto obtenés el mensaje de la
categoría repetida, porque en realidad estás volviendo a ingresarla.
Tu validación del lado del servidor previene la inconsistencia de
datos!
Digamos que este comportamiento del navegador no es una fallo, sino una
característica...
La solución no es linda: hacés que el formulario vaya a otro script,
por ejemplo ins_categ.php que tiene todo el código de la inserción pero
ninguna salida. Luego de insertar, la última línea hace un
header("Location: abm_categ.php") con lo que el script salta a la
interfaz del usuario.
De esta manera al presionar F5, no estás recargando ins_categ.php sino
abm_categ.php, que ahora no hace nada.
La contra de este mecanismo es que tenés que implementar alguna forma
de pasarle a abm_categ.php los mensajes de error o de Ok, para dar
feedback al usuario.
Se puede implementar con sesiones o vía URL header("Location:
abm_categ.php?msg=Categoria+agregada"). Lo único que hace abm_categ.php
es mostrar el mensaje y decorarlo diferente si es de error u Ok.
Esto se complica cuando además del mensaje, teneś que pasarte la página
del paginador o más parámetros... es algo a pensar de antemano.
También podés ignorar todo esto: el mensaje "La categoria ya esta dada
de alta en el sistema." es correctísimo porque al presionar F5, el
usuario está reenviando el formulario y tu sistema le impide la
inconsistencia.
> Muchas Gracias
Por nada!
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado