Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/chs/desarrolloweb.com/home/html/muestra/muestra_comentario_no_revisado.php on line 58
Comentarios de la faq Actualizar navegador sin ejecutar POST no revisados
  Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo
FAQ: Actualizar navegador sin ejecutar POST

 Se muestran 10 comentarios sin revisar

Santiago Balaguer  06/9/06 
Más facil!! Crea una variable de formulario hidden en el formulario original con el valor: salvar. Luego, cuando envies el formulario, comprueba que esta variable sea igual a esto, si lo es inserta los datos en la BD, cambiale al valor vacio.

Roberto  06/9/06 
ACTUALMENTE, ME PASA ALGO SIMILAR, YO LO HAGO ASI,
AUNQUE ESTE EN ASP ESTO ESPERO QUE TE DE UNA IDEA DE COMO HACERLO EN DONDE NECESITES

1.- LA PAGINA ESTA DIVIDIDA EN DOS PARTES CON Y SIN FORM

if request.form="" then
Muestro Formulario
else
Inserto en la base de datos
Muestro Mensaje OK
Vinculo al Inicio
end if

ASI TE AHORRAS HACER DOS PAGINAS


2.-ASIGNALE UN IDENTIFICADOR A LA BASE DE DATOS COMO UNA CLAVE, Y VALIDA SI ESTA ANTES DE INGRESAR. TE ESCRIBO EL SQL, ASI EN MUCHO SEUDO CODIGO

select clave from mi tabla

SI ESTA VACIO ESTE RECORDSET, LO AGREGAS

insert into mi_tabla (dato1,dato2, etc..)

SI EXISTE MANDA UN MENSAJE EN LA HOJA PARTE DEL FORM

"Esta informacion ya ha sido capturada"

AUNQUE TAMBIEN YA VALIDANDO SI EXISTE, PODRIAS ACTUALIZARLO

update mi tabla set columna_1 = dato_nuevo where clave = Clave

TODO JUNTO SERIA

if request.form="" then
Muestro Formulario
Else

Set rs = select clave from mi tabla
if not rs
Inserto en la base de datos
insert into mi_tabla (dato1,dato2, etc..)
Muestro Mensaje OK
Then
"Esta informacion ya ha sido capturada"
end if
Vinculo al Inicio
end if
if request.form="" then
Muestro Formulario
Else

Set rs = select clave from mi tabla
if not rs
Inserto en la base de datos
insert into mi_tabla (dato1,dato2, etc..)
Muestro Mensaje OK
Then
Actualizo
update mi tabla set columna_1 = dato_nuevo where clave = Clave
Muestro mensaje “Actualizado”
end if
Vinculo al Inicio
end if



ESPERO HABERME EXPLICADO :)
SI NO NO DUDES EN ESCRIBIR

mario  06/9/06 
Bueno si tienes un campo llave entu Base de datos lo que puedes hacer es preguntar a la Base de datos si existe este registro i no existe que Inserte y si existe pues no inserta con If then else arreglas lo del mensaje de error de la Base de datos ya lo demas es pura logica

Jorge Molina  07/9/06 
Aunque estoy de acuerdo en que las tres opciones presentadas son buenas creo que la más practica es la primera debido a que al recargar no aparecerá el mensaje de "Desea reenviar la información" y lo que es más importante se prevendrá que el usuario presione en "No" ante este mensaje con lo que saldría una pagina en blanco y el usuario quedaría "colgado" en esta pagina si no sabe usar los botones "Atras" y "Adelante".

Wolfgang Wagner  08/9/06 
Yo suelo utilizar un campo del tipo "hidden" que me controla eso. Y cuando ejecuto sobre la misma pagina el ingreso de los datos del formulario chequeo el parametro utilizado en el "hidden" si coincide el valor o no. Asi evito que el usuario al pulsar el boton "actualizar" del navegador el programa vuelva a introducir los datos. Aparte de usar otros controles como por ejemplo verificar si el campo email ya se encuentra registrado o no. Asi no tengo necesidad de usar una pagina secundaria. Ah! y por supuesto inicializo el valor del dato usado en el campo "hidden" ;)

camilo  16/10/06 
si la clave principal yaexiste
1. Ejecutas la instruccion select * from tabla;
2.La recorres y incrementas el contador en el while
3.
si el contador es igual a cero haces el insert sino le dices que hay un error

Andrés Pepinosa  10/11/06 
Mira genera una variable $mivariable como campo Hidden que lleva la cuenta de la ejecución de la inserción, cuando esa cuenta se superior no ejecuta el query... pasas <input type='Hidden' name='cuenta' value=0> ademas de una variable que se evalue para ejecutar la acción que tú quieres.
//Evaluas
$cuenta++;
if($cuenta>1 && $opcion='Ejecutar')
{echo "Error<br>";
}
else
{$consulta=pg_query([conexion],[sql a ejecutar]);
//esto para el cado de postgres
}

Espero te sirva

jonas fut  01/1/07 
Tuve el mismo problema, y como estoy empezando no me quedó muy claro qué tan "elegante" podía ser. El mismo problema se me presentó en el caso del libro de visita (taller) de dllo web.

Tambien el mismo problema se presenta en el caso de envio de email sobre la web.

Lo solucioné haciendo una consulta a base datos. Si el registro ( al actualizar) es el igual al anterior...o alguno de los campos ( como "comentario" por ejemplo) era identico al anterior, no graba por segunda vez

Luis Caceres  04/3/08 
Como el formulario se llama a si mismo, la idea es validar que el registro no exista y luego grabar. Ahora, si existe, puedes enviar un alert mediante javascript avisando que se está tratando de ingresar nuevamente la información

Javier  25/3/08 
muy facil, en la programacion verifica si el registro se guarda, una ves echo eso con un control if por ejemplo envia un valor para que no pueda volver a hacerlo, ocultando el boton o desabilitandolo.

Ver el articulo / faq completo