Foros del Web » Programando para Internet » Javascript »

Guardar los valores de un formulario de una página web

Estas en el tema de Guardar los valores de un formulario de una página web en el foro de Javascript en Foros del Web. Busco un sistema "portable", con el que uno pueda llevarse una página web y ejecutarla donde quiera, poner unos valores en un formulario,y guardarla y ...
  #1 (permalink)  
Antiguo 29/06/2005, 04:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Guardar los valores de un formulario de una página web

Busco un sistema "portable", con el que uno pueda llevarse una página web y ejecutarla donde quiera, poner unos valores en un formulario,y guardarla y que se queden guardados los valores. Ha de ser htm y no asp, pues el usuario no tiene por qué disponer de tecnología de servidor en su ordenador.

He hecho este código de ejemplo, que aunque funciona, me guarda la página pero no los valores de los input's, ¿cómo se haría esto?

Código:
<html>
<body>
<form name="formulario1" method="POST" action="nada">
<input type="text" name="texto1">
<input type=button value="Guardar" onclick="salvar()">
</form>
<script language="JavaScript">
function salvar()
{
document.execCommand("SaveAs",true,"prueba.htm");
}
</script>
</body>
</html>
Me daría igual si en lugar de guardarse la página web entera, lo que ocurriera fuese que los valores de los input se guardaran ordenadamente en un documento de texto (por ejemplo).
  #2 (permalink)  
Antiguo 29/06/2005, 13:27
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Creo que no se puede ni en HTML ni en JS, aunque preguntaría si podés modificar un TXT en JS

Igualmente si lo hicieras si lo transportas en CD o por la web deberías de estar copiando el archivo constantemente !!! Cmo hacve pasa saber una máquina lo que escribió otra ???

Porque sino hay una forma de emular un servidor web a través del CD, se que en perl se puede...

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 30/06/2005, 01:31
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
¿¡No se puede!? ¿Ni siquiera que se cree un .txt que guarde los valores?
  #4 (permalink)  
Antiguo 30/06/2005, 06:26
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
un tio.... con asp no sera mas facil crear un archivo de texto con el contenido de la web????
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #5 (permalink)  
Antiguo 30/06/2005, 10:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Metallick, ¡claro que es más fácil con ASP! Con ASP sería facilísimo. Pero el problema es que quiero un sistema "portable", para que un usuario, sin necesidad de tener instalado en su ordenador (ordenador que puede ser un portátil sin conexión a internet)el software de servidor necesario para que funcione el ASP, pueda guardar datos de la aplicación (y más adelante, cuando pueda, pasarle estos datos a un servidor ASP). El ASP tiene la pega de que necesita un ordenador preparado como servidor, y esto no siempre es así.

Para que te hagas una idea: imagina que un usuario se va por ahí y pone notas en un archivo de texto, y que luego puede subirlo a un servidor y que éste guarde sus datos: de la misma manera que puedes concebir eso, piensa que quiero una "aplicación" más bonita y regulada que un archivo de texto, donde pueda guardar unos datos, en cualquier momento, de manera fácil e intuitiva.
  #6 (permalink)  
Antiguo 30/06/2005, 10:26
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
mmmm entonces no se..... como dijo Monoswim no creo que se pueda con HTML... ni con JavaScript.... bueno eso saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #7 (permalink)  
Antiguo 30/06/2005, 16:22
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Hola todos :

hace rato que no insisto en lo negativos que estamos en el foro...

un_tio : mira si ésto te sirve aunque sea para mejorarlo.

Guardar en disco opciones de seleccion

saludos

furoya
  #8 (permalink)  
Antiguo 01/07/2005, 10:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
¡Muy útil furoya! Me ha sorprendido mucho lo que has hecho. ¡Es increíble las posibilidades que tiene el html (y se nota que te lo has currado mucho y las has demostrado)!
Pongo tu primer código:

Código:
<html>
<head>
<title>GUARDA VALORES FORMULARIO. </title>
<script language= "JavaScript">

var autor = prompt("Escriba aquí su nombre y apellido", "");
var valores = "";
var cuestFinal = false;

function suNombre(){
autor = (autor == null)? "¿...?" : autor;
document.getElementById("nombreApellido").innerHTML = autor;
}

function abreFinal(){
valores = document.getElementById("contCuest").innerHTML;
if(!cuestFinal)alert("No olvide guardar la nueva Página.");
nueva = open("", "final");
nueva.document.write(valores);
nueva.document.close();
cuestFinal = true;
}
</script>
</head>
<body onload="suNombre()">
<h2>Abre un nuevo documento con los cambios en el formulario.</h2>
<hr>
<div id="contCuest">
<h2 id="nombreApellido"></h2>

<form name="formulario">
<h3>¿Hacia qué lado rueda el silencio con la luz del día?.</h3>
<input type="radio" name="R1" />Sagitario. <br />
<input type="radio" name="R1" />Tuétano.<br />
<input type="radio" name="R1" />Codicioso.<br />

<h3>¿Cuántas hojas caen del abeto en el verano?.</h3>
<input type="radio" name="R2" />0. <br />
<input type="radio" name="R2" />00. <br />
<input type="radio" name="R2" />000. <br />

<h3>¿Qué hora es?.</h3>
<input type="radio" name="R3" />La primera. <br />
<input type="radio" name="R3" />La última. <br />
<input type="radio" name="R3" />Por el medio. <br />

<h3>¿Cómo se batanea el comburente?.</h3>
<input type="radio" name="R4" />Colorado. <br />
<input type="radio" name="R4" />Sin remordimiento. <br />
<input type="radio" name="R4" />A baño maría. <br />

</form>
</div>

<input type="button" value="Abre Formulario Para Guardar" onclick="abreFinal()">
</body>
</html>
Y, prescindiendo de la primera parte, que no me interesa (la de "diga su nombre"), me quedan algunas dudas de lo que después viene, en concreto de la función "abreFinal()":
-¿Por qué muchos símbolos de ">" los pones como "/ >"?

-¿Y por qué dices en ese tópic que se manda en forma de cadena y luego se descompone? Aquí está:

"En mi mensaje anterior propuse guardar una variable. Ésto es porque el método usual es resumir en un string los valores de formulario para después enviarlos.
Una vez recibidos se descompone la cadena y así se recuperan los datos iniciales."

Lo mandas todo de golpe, sí, pero no veo que haya un proceso ahí de descomponer la cadena, etc. (quizás internamente, pero tú no has tenido que programarlo).

Y bueno... voy a intentar añadir una funcionalidad más, que no tengas que darle a guardar tú la página sino que eso sea automático.

Creo que el siguiente paso, debería ser el siguiente: que le dieras a un botón que lo que hiciera fuera preguntarte en qué dirección del disco duro guardar la página. Esto podría hacerse poniendo esta funcionalidad en la nueva página que se crea (tal vez por medio de javascript), y cerrando dicha página (lo ideal sería no tener ni que abrirla, sino que directamente, con los valores guardados en la variable de javascript, se guardara en el disco duro la página). ¿Cómo se cierra una página (me refiero a la ventana entera)?

Última edición por un_tio; 01/07/2005 a las 10:29
  #9 (permalink)  
Antiguo 01/07/2005, 10:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
¡Ya está!

¡Ya he hecho una versión bastante buena! Además, he ido aprendiendo probando (es muy intuitivo) a cerrar ventanas, focalizar en otras, etc.

Sólo me falta saber, cómo cerrar la ventana actual. Para cerrar la nueva ventana, en caso de que quisiera, haría:

nueva.window.close

¿Y para cerrar la ventana actual en la que se ejecute ese código?
  #10 (permalink)  
Antiguo 01/07/2005, 10:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
¡Ya he aprendido a cerrar la ventana actual! En esta web lo he visto (la pongo porque dice muchos comandos html útiles): http://geneura.ugr.es/~victor/cursil..._pagina.html#2

Se cierra con
self.window.close()

o simplemente

window.close()

o simplemente close().

Pero lo he probado y existe un problema: para cerrar la ventana actual, el explorador, por defecto, te pregunta si estás de acuerdo con cerrarla o no. Así que este método, si eso no se puede cambiar, no sirve, puesto que tenía que ser algo ágil y que ni se notara (que el usuario pensase que ni había cambiado de página. Pero bueno, era una chorradilla, se puede cerrar la ventana nueva y ya está ).
  #11 (permalink)  
Antiguo 02/07/2005, 14:39
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Hola un_tio :

Lo del "/ >" es porque algunas etiquetas no llevan una de cierre, entonces la barra antes del fin de paréntesis angular va en la misma etiqueta de apertura. Funciona igual sin la barra, pero en XHTML se debe escribir así, y no cuesta nada hacerlo.

Lo de descomponer la cadena está explicado más abajo, con un select múltiple y después con un ejemplo de conversión a binario en el mensaje #11.

La ventana opener se puede cerrar sin mensaje de confirmación, eso está en las FAQs de javascript. Pero no funciona bien en los últimos navegadores; además, no es muy respetuoso andar cerrando ventanas sin el consentimiento del usuario.

Por último, en el enlace que está al final del mensaje #11, se puede ver cómo elegir en que directorio guardar la página. Pero, insisto, eso lo puede elegir el usuario; en cualquier aplicación pasa así.

Me alegra que te haya servido el código y, sobre todo, que sigas investigando.

saludos

furoya
  #12 (permalink)  
Antiguo 03/07/2005, 08:32
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Cita:
Iniciado por furoya
La ventana opener se puede cerrar sin mensaje de confirmación, eso está en las FAQs de javascript. Pero no funciona bien en los últimos navegadores; además, no es muy respetuoso andar cerrando ventanas sin el consentimiento del usuario.
Lo que ocurre es que es una página que se abre únicamente para guardar los valores del formulario, y que es repetición de la anterior. El usuario, para mayor comodidad suya, sólo debería ver el "Guardar como...". Si conoces algún método que permita guardar en el disco duro la página con el formulario rellenado, sin necesidad de mostrarla por pantalla en una nueva ventana, por favor cuéntanoslo.

Saludos
  #13 (permalink)  
Antiguo 03/07/2005, 10:52
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
¡Momento! ¡Momento!

El enlace muestra la forma de guadar un .TXT.

Para guardar el documento .HTM ( en IE ) se usa

Código:
<html>
<head>
<title>GUARDA VALORES FORMULARIO. </title>
<script language= "JavaScript">

function abreFinal(){
valores = document.getElementById("contCuest").innerHTML;
nueva = open("", "final", "top=2500");
nueva.document.write(valores);
nueva.document.execCommand('SaveAs');
nueva.document.close();
nueva.close();
}
</script>

</head>
<body">
<h2>Abre un nuevo documento con los cambios en el formulario.</h2>
<hr>
<div id="contCuest">
<form name="formulario">
<br /><br />
<input value="input" /> <br />

<input type="radio" name="R1" />radio1 <br />
<input type="radio" name="R1" />radio2 <br />
<input type="radio" name="R1" />radio3 <br />

</form>
</div>

<input type="button" value="Abre Formulario Para Guardar" onclick="abreFinal()">
</body>
</html>
Con VBS se puede guardar, imprimir, tener una vista previa de impresión ..., pero aquí no tene mucho sentido.

Intenté mover la nueva ventana fuera de la vista, asì no parece que se repita, no sé en que versiones andará.
  #14 (permalink)  
Antiguo 03/07/2005, 16:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Sí, si sé que así es como se guarda el IE. Tu programa es asombrosamente parecido al que yo había hecho:

Código:
function abreFinal(){
valores = document.getElementById("contCuest").innerHTML;
nueva = open("", "final");
nueva.document.write(valores);
nueva.window.focus;
nueva.document.execCommand("SaveAs",true,"prueba.htm");
nueva.document.close();
nueva.window.close();
cuestFinal = true;
}
Como ves, yo lo que hago es que se abra la ventana nueva, se guarde, y luego se cierre.

No entiendo en tu código qué hace nueva=open("", "final", "top=2500"); lo que yo preguntaba en definitiva, era si se podía guardar la ventana sin necesidad de abrir una nueva.

Saludos
  #15 (permalink)  
Antiguo 04/07/2005, 03:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
furoya, ¿Sabes qué estaría muy bien? Poder poner en la página nueva no sólo el formulario rellenado, sino también el script Javascript para poder desde ahí seguir creando nuevas páginas. Así, podríamos sobreescribir la nueva página en la antigua... ¿Crees que se puede esto?

El método del id empleado, no sé si servirá para un trozo de código Javascript (supongo que no), y poner document.write"<script...>...</script>" te acaba llevando hasta el infinito (ya que tienes que poner las líneas que a su vez crearán las líneas... y esto va cambiando puesto que primero tendrías que poner el carácter de escape de las comillas, que es \", luego el carácter de escape del propio símbolo \, y así...).

Saludos
  #16 (permalink)  
Antiguo 04/07/2005, 12:04
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Cita:
Iniciado por un_tio
...te acaba llevando hasta el infinito (ya que tienes que poner las líneas que a su vez crearán las líneas... y esto va cambiando puesto que primero tendrías que poner el carácter de escape de las comillas, que es \", luego el carácter de escape del propio símbolo \, y así...)....
Creo que ya me perdí.

Empecemos con los 2500. Son para poner la nueva ventana fuera de la vista (a menos que tu monitor soporte 2500px de alto). La ventana modal de "Guardar como..." sí queda visible, y parece que fuera de la ventana opener.

Igual no sé que tan bien andará en los nuevos navegadores. IE6 viene configurado para no permitir la manipulación entre ventanas, y no le podemos pedir al usuario que cambie su nivel de seguridad para nosotros.

Si me explicas un poco más qué es lo que haces puede que encontremos otra solución, como no usar una página que se reduplique sino una herramienta para ir creando las páginas, y al usuario le mandamos el contenido TXT para hacerlas.
  #17 (permalink)  
Antiguo 05/07/2005, 03:01
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Hmmm, yo lo que quería era eso, una hoja que genera copias de sí mismas (como la del formulario, pero que además este formulario conserve la capacidad de generar más páginas como ella).

Saludos
  #18 (permalink)  
Antiguo 07/07/2005, 12:13
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Tal vez así, pero siempre estamos en IE, sería bueno si alguien supiera cómo hacerlo en otros navegadores...

Código:
 
<HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<script>
function abreFinal(){
valores = window.document.all.tags('html')[0].outerHTML;
nueva = open("");
nueva.document.write(valores);
nueva.window.focus;
nueva.document.close();
nueva.document.execCommand("SaveAs",true,"prueba.htm");
nueva.window.close();
}
</script>
</HEAD>
<BODY>
<textarea>
QWERTYUIOP
</textarea>

<input type="button" value="Abrir cambios" onclick="abreFinal()">
</BODY></HTML>
  #19 (permalink)  
Antiguo 09/07/2005, 12:31
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Hmmm, la verdad es que no sé qué has hecho ahí. ¿Qué consigues con valores = window.document.all.tags('html')[0].outerHTML;?
  #20 (permalink)  
Antiguo 10/07/2005, 07:46
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
El código entero de la página. Es decir, lo que haya dentro del primer (y único) HTML. Por eso metí el DTD adentro, aunque no sé si está bien...
  #21 (permalink)  
Antiguo 13/10/2005, 16:06
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
Hola, un_tio,furoya

tengo un listin telefonico compuesto de dos archivos, uno, con el listin propiamente dicho, que se genera a si mismo con javascript, a partir de una matriz con los datos. El otro, es el editor de la lista, bueno, en mi caso, mas que editar, lo que hace, es añadir nuevos contactos al final de la lista, y para de contar. La gracia, es que el listin, abre el editor, pasandole los datos en la direccion(location.search), hasta ahora he podido añadir una cadena(datos) de mas de 800 caracteres., y el editor, al darle a grabar, abre la lista, con los datos ya incluidos en su matriz, con lo que solo queda grabar.

lo que muestran en pantalla es lo mismo, solo varian sus scripts y que uno contiene los datos en el documento y el otro puede "editarlos"(no he conseguido hacerlo todo con un solo archivo ,pero la solucion se me hace que esta cerca.

Lo que hace es esto:
Se abre el listin
se le da a editar
se edita
se le da a grabar
se muestra el resultado y se graba

Cuando lo deseable es esto otro:
Se abre el listin
se edita
se le da a grabar y se graba

No se si esto vale para vuestros propositos. Saludos.

Última edición por programeitor; 13/10/2005 a las 16:18
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 13:19.