Mantener datos al enviar formulario
¿Has visto alguna vez formularios que al enviar los datos te devuelve un mensaje indicando que te hace falta llenar uno de sus campos? Seguramente, sí. Y ¿has visto que existen formularios que al indicar que te hace falta llenar uno de sus campos vacíos, te devuelve en blanco los otros campos que habías llenado?
Hoy voy a compartir contigo una forma sencilla -en PHP- para evitar que hagas perder tiempo a la gente y si le vas a pedir que llene los campos que tú necesitas, pues al menos le hagas el favor de conservar la información que ya te mandó.
Básicamente, el truco está en el value, donde lo que debes hacer es:
input type="text" name="nombre_campo" value="< ?php if (isset($_POST['nombre_campo'])) echo $_POST['nombre_campo']; ?/>"
Lo que hace ese PHP es revisar que si la variable se ha enviado por el método post y ya tiene un valor asignado, la imprime.
Es sencillo, no requiere de ciencias ocultas, pero a más de uno servirá.
Éxito y a estudiar mucho para aprender a hacer bien las cosas
74 Comentarios


agosto 11th, 2005 at 2:45 pm
genial tip.. grax!!!
saludetes
agosto 15th, 2005 at 8:12 pm
Sabes que necesito insertar esos campos en una base de datos, ¿será necesario llamar a esa misma página para insertar los datos?, si lo hago de esa forma, ¿qué inconvenientes tendría?, de echo la manera que vos propones esta buena, pero, ¿qué pasaría si hago un refresh y suponiendo que los datos los haya llenado correctamente?
agosto 16th, 2005 at 1:12 am
Saludos,
1.- No se usa refresh…
2.- Yo reviso en una sóla página, tres estados:
a.- Normal, el formulario
b.- la forma sometida y con datos llenos o vacíos
c.- si la forma está bien, manda los datos a la base…
Le ves la lógica? Sólo necesitas un poquito de imaginación, saber usar los if else y listo!
Éxito!
agosto 16th, 2005 at 6:48 pm
Hermano, lo que te digo que no es conveniente que tengas esa validación sobre la misma página, suponiendo que los datos estén bien, si haces un refresh podrías duplicar datos en la base de datos, en resumidas cuentas, no es recomendable llamar a ese mísma página para ingresar los datos, tenes que llamar a otra de procesos para que te haga el proceso de inserción y depués caer sobre la misma en caso de todo bien o a otra no sé. Sabes vos no sos el que vas a utilizar la página son tus usuarios, si ellos por casualidad hacen un refresh podría originarte problemas.
En tales casos lo más recomendable es que almecenes esos datos en una variable de sesión en caso de que haya falla, únicamente el arreglo $_POST lo serializas mediante serialize y se lo asignas a la varible sesión, lo redireccionas a la página de datos del formulario y ahí deserializas la variable de sesión, de la forma $array = unserialize($_SESSION[error]) y si if(in_array(ponervariblecajatexto,”")) y encontras ese campo requerido únicamente lo marcas con un gif o lo que sea.
Te saludo pedro.
agosto 16th, 2005 at 11:50 pm
Gracias Jc,
Tiene sentido lo que planteas. Es una de las bondades del PHP. Tienes una y mil maneras de hacer las cosas.
noviembre 1st, 2005 at 5:23 pm
pablo me resulto optimo el eljemplo de mantener datos,pero ahora quisiera saber si en otro boton submit a la vez, puedo limpiar los imput type text
AGRADEZCO TU RESPUESTA
febrero 23rd, 2006 at 1:51 pm
Buenos días, mi problema es que cuando monto la apliacación en un servidor Web, esta funciona, pero cuando la monto en otro, ya no funciona. Lo que pasa es que hay campos donde el usuario no escribe datos y debo hacer un update a la base de datos SQL server 2000, en uno de los servidores, estos datos vacios los llena como Null, pero en el otro no, entonces me sale error de sintaxis y se cae la aplicación. Alguien me puede ayudar?
abril 7th, 2006 at 10:59 pm
Jc, en realidad no es necesario serializar antes de guardar en session: PHP invoca a serialize() internamente cuando guardas algo en la session. Por otro lado, el problema es más sencillo. Manda los datos al archivo que valida y guarda los datos en la DB, y despues usa
header(“location:pagina_exito.php”);
para redireccionarl el browser a la página de “gracias por enviar formulario” (o algo así).
De esta manera evitas el problema del refresh.
abril 15th, 2006 at 2:53 am
mi consulta es la siguiente:
necesito saber como mantener los datos en un formulario de una cadena completa, ya que si ingreso en el campo la cadena “hola mundo”, me muestra en éste solo “hola”
junio 9th, 2006 at 12:29 pm
hola miago ojala me puedas ayudar lo q pasa es que quiero pasar variables en PHP si usar FROM osea con el click de boton en JAVA SCRIP para validar la pagina, entoces no se como pasar esas variable para esten en otra pagina como ejemplo “codigo”
gracias amigaso …
julio 5th, 2006 at 10:55 pm
tengo unas variables que extraigo de la base de datos las asigno a variables sesion $_sesion, pero cuando paso a la pagina que las muestra no se imprimen, no se ven en la sesion, pero si esta autenticado, no entiendo que pasa, una ayuda por favor.
julio 19th, 2006 at 10:39 am
hola:
Tengo una duda o mas bien una pregunta,como le hago para pasar unas variables a otra pagina mediante un botón, mi segunda pagina funcionaría como una vista preliminar de los datos q introduje en la pagina uno, les agradecería que me ayudaran, bye.
julio 19th, 2006 at 2:49 pm
Saludos.
He pegado las lineas respectiva pero no me funciona estoy en un lio.
Gracias
julio 27th, 2006 at 4:58 pm
Hola Necesito Ayuda, Necesito mantener los valores de los campos cuando envio los datos, mi formulario(tengo el formulario en una pagina y en el action llama a la pagina que se encarga de guardar en BASE de Datos) guarda en la base de datos si los campos estan correctos, pero si existe algun error la pagina me devuel un mensaje el formulario de registro con header(“Location: registrar.php?errorusuario=si”);pero me borras los campos que llene antes de enviar al formulario, como hago para que estos valores pernazcan
julio 27th, 2006 at 11:13 pm
Saludos Mildred, debes hacer exactamente lo que dije en el tema… a menos que estés enviando los datos por el método GET, pues entonces cambia el POST, por GET.
Éxito!
julio 31st, 2006 at 8:41 am
Hola Pedro, muchas gracias! me sirvio el truco lo hice de la manera siguente: en vez de redireccionar la página cuando ocurria un error, lo que hice fue colocar el mensaje de error en la pagina que llama el formulario para guardar en la BD y luego copio el formulario nuevamente pero con el value= value=”". Ademas creo que el iguiente simbolo”/” esta demas porque nome funcionaba, luego lo borre y sirvió perfectamente
“> y NOOOOOOO
/”>
agosto 1st, 2006 at 7:40 pm
No Mildred, NO está de más… así se cierran las tags en XHTML, que es la forma en que trabajo.
En fin, qué bien que te sirvió de algo el post
agosto 2nd, 2006 at 9:58 am
Hola pedro, te escribo para ver si me puedes ayudar con esto: Necesito validar que se halla seleccionado una opcion de un combobox para poder enviar el formulario, Como puedo hacerlo?, es decir tengo un combobox con una lista de valores y no guardar en la bd hasta que haya un valor válido haya sido selecionado por el usuario en el combo, es decir que no me guarde un nulo, Gracias por tu ayuda
agosto 2nd, 2006 at 11:23 am
tengo este codigo en java script para validar que selecione una opcion en el combobox y no me funciona
if (form.listipousuario.options[form.listipousuario.selectedIndex].value==”"){r=0;alert(“Por favor, seleccione una opcion valida”);form.listipousuario.focus()};
septiembre 1st, 2006 at 6:16 pm
Como mantengo los datos del formulario en asp-html
gracias.
septiembre 7th, 2006 at 10:30 am
Hola!!! Estoy implementando un modulo de Circulares en PHP y MySql, donde tengo un formulario con su tabla para ingresar la circular, una tabla de estudiantes con codigo y nombres, una pagina que muestra la lista de circulares almacenadas con vinculo a detalle. hasta ahora no hay problema, todo funciona bien. La cuestion es que me toco crear una tabla de control de lectura que almacene ciertos datos como el codigo del usuario, el numero de la circular y la fecha, en el momento en que quiera visualisar dicha cirucular. no he podido y no tengo ni idea de como hacerlo,
Ayuuudaaa Please!!!
septiembre 8th, 2006 at 10:05 am
Hola…
para ver que otra ayuda me puedes dar.
Muchas gracias me sirvio muchisimo de verdad, seguire navegando
Adios
septiembre 13th, 2006 at 7:58 am
Hola tengo un problema quiero Mantener datos al enviar formulario pero los datos no estan en un input si no en un text area y no me deja hacerlo asi ,,,, me podrias colaborar
septiembre 13th, 2006 at 8:51 am
Mildred, yo habría resuelto la validación de un combobox, con la evaluación mediante array de PHP.
Juan González, no manejo ASP, pero asumo que debe haber un equivalente al PHP que propongo.
Juan Matías, busca acerca de tablas relacionadas y usa INNER JOIN en el SQL.
Silver, gracias por tu visita y comentario. Para mí, el que le sirva a los demás, ya es ganancia, un agrado. Éxito!
Milena, es lo mismo. Un input guarda los datos en value=”" pero el textarea lo hace entre las tags, así:
Éxito!
P.D. En tu código HTML, debes substituir [ por < y ] por >, en el PHP, está bien.
septiembre 15th, 2006 at 11:29 am
bueno yo intente realizar un formulario, lleno los campos y al enviar los comentarios al correo no los puedo ver. Qué puedo hacer
octubre 5th, 2006 at 7:51 pm
Respondo a Juan González.
Justo ayer pude solucionar el tema de la validacion de un combobox! Siempre y cuando tengas la primer opcion algo como “elija una opción” (que seria el index 0)
entonces, donde usaste
(form.listipousuario.options[form.listipousuario.selectedIndex].value==””){
sólo preguntá Si(form.listipousuario.selectedIndex == 0) quiere decir que el usuario no optó. OK?
octubre 6th, 2006 at 8:55 am
Estoy haciendo en php un scan con las funciones gethostbyaddr,gethostbyname y gethostbynamel. Necesito saber como en php, los valores que me devuelve el formulario pueda insertar en un textarea.
octubre 13th, 2006 at 1:16 pm
Nesesito que me ayudes en un problemilla lo que pasa es que quiero que despues de escribir algo en un input de un form no me aparesca nada de historial de lo que ya he escrito. Por favor Gracias.
noviembre 17th, 2006 at 1:41 pm
Lo que quiero hacer es justamente lo que tu haces en este form que llene. Validar los datos de mi form que puse en mi pagina.
-validar que si email, nombre, empresa y tel estan vacios que no permita enviar el form.
-Validar que el email sea coherente (direccion@servidor.dominio).
Te agradeceria mucho si me echas la mano con esto, porque yo no tengo mucha practica en hacer paginas, gracias…
Nombre:
E-mail:
Empresa:
Estado:
País:
Cód de país:
Lada:
Tel:
Cel:
Preguntas y cotizaciones…
–>
noviembre 23rd, 2006 at 1:04 pm
HOLA. muy bueno el post.. que lastima no haberlo encontrado antes, por lo que me tocó inventar mi forma y es prácticamente la misma, solo que no uso la condicion if(isset($_POST['lavariable'])), sino que escribo en el parametro ‘value’ un:
asi, si esta.. escribe el valor.. y si no está, omite el error.
–respecto a lo de colocar la validación en la misma página, concuerdo con Jc en el sentido de que si hay una recarga de la página con todo el arreglo $_POST validado correctamente, la insercion se hace doble en la base de datos, si no has tomado contramedidas, como poner condiciones sobre variables $_SESSION que expiren o algo por el estilo.
Sin embargo, he llegado al punto en el que mezclo técnicas como la de refrescar la página mediante código al estilo –> ‘header(…)’, incluir variables de $_SESSION que cuentan las veces que se refresca la pagina, y las condiciones para que no acceda a la parte donde actualiza.. y lo que hace es simplemente quedar estancado en un punto en el que lo unico que me queda es poner un mensaje al usuario para que haga clic y redireccione el mismo…
noviembre 30th, 2006 at 11:16 am
no he podido crear un buzon de sujerencias para mi web
noviembre 30th, 2006 at 1:10 pm
como guardo en un array, datos tomados de un formulario y luego listarlos:
t1 t2 tn
b1 b2 bn
f1 f2 fn
los ej. q hay solo son p cargar constantes pero yo necesito q los vaya tomando del formulario las veces q los ingrese.
diciembre 2nd, 2006 at 3:23 am
oye nesecito una yudidita sera que me ouedes atudar yo quiero baidar un formulario de email por dreanwacer y sql pero yo nose mucho deeso crear formularios quisiera saver si algiem me atuda a balidarlo hai les dejo mi coreo porfa ayudenme
diciembre 6th, 2006 at 6:52 am
No puedo mantener el valor de una variable, aunque pongo $_get['nombre_variable']la pierdo.¿Como la tendria que pasar?
Desde ya muchas gracias.
diciembre 12th, 2006 at 9:20 am
Hola ese codigo estuvo excelente pero tengo un problemita. He tenido que salir de mi ?> para poder copiar ese codigo pero si tuviera:
echo “”
como podría corregir ese codigo porq sale error
enero 19th, 2007 at 9:28 am
como hago para mantener los datos de mi formulario de forma que yo pueda acceder a ellos, es decir donde se guardan estos datos.
enero 20th, 2007 at 4:55 pm
Una pregunta ese ejemplo funciona si utilizo el metodo POST, pero si yo paso los valores en php atraves de un link Ej(pagina.php?var1=valorVar1&var2=ValorVar2 Tambien podria conservarlos? o como le haria?
Te agradeceria mucho me respondieras
enero 22nd, 2007 at 3:24 am
Hola:
Mi problema es que quiero mantener los datos de un formulario cuando mando datos de otro formulario
enero 22nd, 2007 at 10:55 pm
Moy, si pasas las variables por una URL, entonces recoge las variables con el método GET.
anderson, si usas los métodos get o post, los puedes recoger en el siguiente paso nada más. Si deseas que estén disponibles en más de una página, te pueden servir las sesiones o las cookies.
enero 25th, 2007 at 1:41 pm
tengo un formulario de registro en una pagina inicio.php donde el susuario inserta sus datos. al enviarlos otra pagina llamada verifica.php verifica que los datos sean correctos. necesito que una vez isertados los datos en la BD se destruyan los datos del formulario, puesto que si alguien accede a verifica.php y actualiza, puede insertar los datos nuevamente
enero 26th, 2007 at 6:32 pm
Pues una solución que se me ocurre, es que al meter los datos satisfactoriamente en la DB, hagas un redireccionamiento. No es complicado, nada más usas un par de if y listo.
La otra que se me ocurre, es que metas el valor del submit en una sesión; luego verificas si ya se ha sometido antes el form, pues te dice que no puedes enviar dos veces el dato.
Una cosa importante es que al inicio de verifica.php evalúes que si no está presente la variable submit, pues que haga un redireccionamiento a una página x.
Éxito!
enero 28th, 2007 at 8:27 am
Muchas Gracias Pedro. Esta informacion me ha sido muy
util
marzo 21st, 2007 at 12:46 pm
Justo lo que estaba buscando… Es de agradecer el apoyo a novatillos como yo…Saludos desde México..
abril 26th, 2007 at 7:43 am
hola me gustaria aprender como hago para pasar los datos de una base de datos a una tabla utizando javascript
abril 26th, 2007 at 7:49 am
me gustaria tambien como hacer q cuando yo este llenando un campo para numeros en el monmento en q yo este ingresando letras a este campo el teclado no responda pero cuando es numeros si me deje ingrsarlos, lo mismo en caso contrario gracias te agradeceria mucho
chaoo
mayo 2nd, 2007 at 12:07 pm
todo lo que comentan esta a todo dar, pero se haria mas practico y si se pusiera un ejemplo aunque sea pequeño.
no creen?
sobre todo de sesiones que es donde no he podido conciliar
mayo 9th, 2007 at 8:42 pm
Hola, soy nueva en PHP y estoy tratando de realizar una pagina de captura, mi problema empieza en las validaciones, debo verificar en la BD que el valor que se introduzca a traves de los inputs en el formulario no este repetido, si es asi enviar el mensaje y dejar el cursor en donde se capturo la informacion repetida sin borrar la pantalla, lo he intentado con una funcion java pero no me funciona manda el error y la pantalla queda en blanco o bien regresa pero me borra la información introducida antes de la validacion, y realmente es mucho lo que hay que capturar y la validacion es casi el final de la pantalla, agradeceria me ayudaran.
mayo 21st, 2007 at 2:20 am
Me has hecho una reina! Mil gracias.No era nada dificil,pero no había caído.
mayo 23rd, 2007 at 8:39 am
En mi codigo me funcionó ok. Muchas gracias.
junio 2nd, 2007 at 5:51 pm
aqui ps pasaba por aqui y llenar mis neuronas de algo mas sobre PHP , suerte a todos y vamos con PHP
junio 8th, 2007 at 7:53 am
hola!, ando teniendo un problemilla, quiero saber si me pueden quitar la duda. Tengo un formulario que no lo puedo redireccionar
espero que me puedan decir en que estoy fallando
Formulario
junio 25th, 2007 at 10:01 am
Hola, buenos días; lo que sucede es que tengo un problemilla con la vinculacion de unos datos a una BD; lo que pasa es que tengo dos formularios, en el primero la persona se registra con su nombre, nuemro de cedula y demás, y estos datos se almacenana en la base de datos perfectamente y tengo redireccionado el segundo formulario para que me lo cargue inmediatamente; y de igual manera el usuario diligencia el segundo formulario que es un test, hasta ahi normal.. el problema radica en que tengo que vincular las tablas de las bases de datos, ya cree en la segunda tabla la llave foranea, pero no se como pasar del primer forumario el dato cedula al segundo formulario para guardarlo en la segunda tabla.. si alguien me peude ayudar lo agradezco inmensamente.
Gracias Aleja
junio 28th, 2007 at 1:48 pm
Recuerda que mysql_indert_id es una función que te devuelve el ID del registro más reciente que has guardado. Entonces, para traer los datos de ese ID, pues haces un query de select donde el ID es el mysql_insert_id metido en una variable.
Eso es todo.
junio 29th, 2007 at 9:39 am
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in …..
es el error que me muestra al colocar lo suguerido..
echo “= 180){ alert(‘Has superado el tamaño máximo permitido’); return false; }\”>if(isset($_POST['textito']) echo $_POST['textito']“;
Algun comentario, para poder continuar… lo agradezco.
junio 29th, 2007 at 11:41 am
no se que estoy haciendo mal, lo copie tal cual pero lo que pasa es que en vez de que aparezca el dato que introduje aparece el codigo php, o sea en campo de texto aparece
julio 3rd, 2007 at 4:37 pm
gracias
agosto 1st, 2007 at 4:59 pm
necesito saber que estoy haciendo mal en este query, porfavor!
insert into mcerve1_paraempleados.mcerve1_bvcbvc.mbPuntos
values (
select id,idEmp,orden,clave,cantidad,puntos,fecha from mcerve1_paraempleados.dbo.mbpuntos_prueba where idEmp in
(select mbEmp_Id
from mcerve1_paraempleados.mcerve1_bvcbvc.mbEmpleados)
)
septiembre 1st, 2007 at 3:53 pm
Hola, ando como loca buscando un formulario gratuito que me mande los comentarios que me hagan a mi url, y si pasa por el correo mejor, claro, por si hiciera falta una criba. Gracias
septiembre 1st, 2007 at 6:08 pm
Saludos María, intentaste en HotScripts?
septiembre 4th, 2007 at 11:34 am
hola yo quisiera saber como hacer que si un usuario le da clik en guardar en un formulario si hay campos vacios le mande un error
septiembre 4th, 2007 at 12:35 pm
Lo puedes hacer con PHP (tal como arriba se indica) o con javascript. En ambos casos evaluando las variables vacías enviadas.
septiembre 6th, 2007 at 2:13 pm
he aprendido muchas cosas aqui,….es un sitio muy educativo…por otro lado quiero saber como puedo traer datos de una base de datos a una caja de texto o input )es un reporte y quiero hacer el codigo para traer datos a un formulario y luego imprimirlos en una impresora….necesito ayuda urgente….me estan midiendo el rendimiento y mis conocimientos….debo demostrar que los tengo…..
septiembre 6th, 2007 at 7:31 pm
Saludos Celin,
No es complicado lo que quieres hacer. Lo que puedo decir es que:
1.- Necesitarás hacer la consulta a la base de datos con un SELECT
2.- Sacar los datos específicamente que necesitas con haciendo un WHERE al ID de los registros que necesitas imprimir en pantalla
3.- Imprimirlo en papel será más fácil con javascript
No es complejo. En caso que te midan por conocimientos y/o rendimiento, recomiendo comiences a leer y practicar MUCHO hasta conseguir el nivel deseado.
Éxito!
octubre 13th, 2007 at 2:02 pm
miren mi pregunta es la siguiente quiero que la informacion que yo meta en un formulario se vaya a mi correo electronico no a mi servidor. me podrian enviar un codigo php o un script para poder hacer esto
octubre 26th, 2007 at 4:10 pm
hola
alguen me puede decir como vaciar un registro de una base de datos a una caja de texto en un jsp:
este es mi codigi jsp
<imput type = "text" name = "carrera" value="">eso quiero hacerlo pero junto con el demas conjunto de datos
solo que aki clave corresponde a una variable int en donde almaceno el valor que tiene clave en la bd
pero me marca error en”como vacio el dato al input type
diciembre 3rd, 2007 at 10:54 pm
Como puedo hacer para que los datos de un formulario se almacenen en una base de datos.o que el comentario que pongas acerca de una pagina aparezca en la misma pagina. por ejemplo los metros y ese tipo de cosas.
enero 25th, 2008 at 3:38 pm
Alguien sabe como dejar los datos en un formulario cuando manda error pero de un select o textarea o sea una lista desplegable… ayuda please…. gracias.
abril 7th, 2008 at 3:06 pm
Saludos! Luego de tanto y tanto buscar en la web, tu linea de codigo me resolvio un gran problema. Gracias!
abril 11th, 2008 at 10:28 am
Eso solamente sirve si tu action es a la misma pagina, pero si tu action es a un php diferente que haga la validacion la cosa cambia
abril 13th, 2008 at 2:26 am
hola que tal, soy nuevo en esto de PHP y quisiera saber si hay alguien que me pueda ayudar. necesito poner un boton que me genere un numero aleatorio y al dar clic sobre este me mande a un nuevo formulario pero en la misma página, en éste se pretende capturar un número tecleado y compararlo con el aleatorio y al presionar otro boton me mande a otra pantalla, pero nuevamente en la misma pagina donde los compare haciéndome saber cuál de ellos es mayor. Necesito hacer esto varias veces, en un ciclo, hasta que ambos numeros sean iguales y mostrar en pantalla el número de intentos.
para ello necesitaria que cada vez que se refresque la página no se genere un nuevo número aleatorio, sino solamente regrese al 2o formulario para teclear un nuevo numero y compararlo nuevamente.
estaba utilizando algo como esto:
if (!isset($_POST['submit']) )
{…}
else {…}
pero solo me funciona solo hasta el 2o formulario, si lo pongo nuevamente me regresa al boton que genera el numero y no a la 3er pantalla de los resultados.
Tambien quisiera saber si me sirve, y como usar lo siguiente:
print <META HTTP-EQUIV=”refresh” CONTENT=”3; URL=xxxx.php”
les agradecería mucho su ayuda!
enero 15th, 2009 at 1:34 pm
Justo lo que estaba buscando!! mil gracias!!
marzo 15th, 2010 at 4:23 pm
Excelente, estaba buscando un control sencillo para evitar que los visitantes tengan que llenar de nuevo los campos. Me sirvió. Gracias
abril 14th, 2010 at 10:28 pm
Hombre, gracias por el tip, muy sencillo y eficaz, me sirvio 100%
mayo 11th, 2010 at 3:28 pm
hola pedro… 5 años despues de tu aporte… pero me salvaste la vida… de verdad que estaba como un loco hasta que di con tu post.
Gracias