Fueron enviados 11 comentarios a la faq

11 comentarios revisados:
| Por: 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.
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
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
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".
Hola!
Otra solución sería que no tengas un botón tipo submit sino uno tipo button. Este último debe llevar OnClick con una función JS que haga submit al formulario.
Ejemplo:
<html>
..
function enviar() {
document.forms[0].submit();
};
<body>
..
<input name="Bot_GRABAR" type="button" value="Grabar" onClick="enviar();">
..
</body>
</html>
Ojalá te sirva... desde hace tiempo que no hago páginas web.
| Por: 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" ;)
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
| Por: 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
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
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
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.