Foros del Web » Programando para Internet » PHP »

Mostrar datos de formulario por pantalla antes de enviar

Estas en el tema de Mostrar datos de formulario por pantalla antes de enviar en el foro de PHP en Foros del Web. Hola a todos, Tengo una página bastante elaborada a nivel de elementos, diseño, estructura, etc. Esta página contiene un formulario que recoge casi 50 datos: ...
  #1 (permalink)  
Antiguo 20/04/2016, 09:54
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Exclamación Mostrar datos de formulario por pantalla antes de enviar

Hola a todos,
Tengo una página bastante elaborada a nivel de elementos, diseño, estructura, etc. Esta página contiene un formulario que recoge casi 50 datos: de tipo numérico mediante botones, de tipo texto mediante cajas, algún radio button, etc.
Actualmente está configurado para que el envío se haga con un botón "submit" por POST a una página web PHP que lo envía a una BD MySQL y todo correcto funcionando perfecto.

El problema ahora es que me piden que se puedan imprimir los datos DEL FORMULARIO que se recogen por impresora, pero ANTES del envío, y me han dejado muerto la verdad.

Con un simple IMPRIMIR desde el navegador es imposible. Por otra parte, he descartado utilizar una hoja de estilo CSS con el media="print", porque es tan compleja que me llevaría mucho tiempo montarlo y ocultar todos los elementos para darle un aspecto simple para poder imprimirlo.

¿Se os ocurre alguna forma de hacerlo fácil? Sólo necesto que la salida tenga un par de logos, los textos de las preguntas y las respuestas.

Mil gracias!
Juan Carlos
  #2 (permalink)  
Antiguo 20/04/2016, 13:46
 
Fecha de Ingreso: abril-2016
Ubicación: Valencia
Mensajes: 17
Antigüedad: 8 años
Puntos: 1
Respuesta: Mostrar datos de formulario por pantalla antes de enviar

Pues me da a mi que te han dado un buen palo. Así sin ver el código no se yo como hacerlo. Lo único que se me ocurre que es pongas un botón imprimir en la página que exporte los datos a un archivo word en una ventana nueva y luego que lo impriman.

Usando las cabeceras de php para el nuevo archivo que debes crear. Ahi podrás imprimir los logos que necesitas.

Código PHP:
<?
header
('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=nombre.doc");
 
header("Pragma: no-cache");
header("Expires: 0");
?>
Y luego que envien los datos a la base de datos.

Espero serte de ayuda
  #3 (permalink)  
Antiguo 21/04/2016, 08:38
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Mostrar datos de formulario por pantalla antes de enviar

Hola!
La verdad es que me han dejado un poco tieso porque ya lo había acabado casi todo... Ayer estuve averiguando cosas y aunque no he podido probar nada hay alguna alternativa, por ejemplo:

Encontré un código que sustituye los valores de la propiedad ACTION con jquery. El código no es complejo de utilizar, pero no estoy seguro que influya de alguna forma lo que se me ha ocurrido:
1. Si pulsan el botón imprimir, jquery sustituye ciertos atributos del formulario para que: Abra un "pop-up" (para no salir del cuestionario) y que pase por POST los datos a una página llamada "impresion.php" por ejemplo donde ya sólo lo dejo maquetado para imprimir por impresora.
Para finalizar, restaura los atributos del form originales, que vinculan a otra página y la abre en la misma ventana.
2. Si pulsan directamente ENVIAR, seguiría el proceso normal que tengo diseñado ahora.

En cuanto lo pruebe confirmo si funciona o no...
Mil gracias por la ayuda!
  #4 (permalink)  
Antiguo 21/04/2016, 13:32
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Mostrar datos de formulario por pantalla antes de enviar

¿Sabes php?

En ese caso simplemente enlista las variables en algo como

Código PHP:
Ver original
  1. echo '
  2. <li>Nombre: '. $Nombre . '<li>';

Pueden estar en el mismo archivo que envía a la bdd, pero hay que enviarlo.

Si no lo quieres "enviar" busca algo con JavaScript.
  #5 (permalink)  
Antiguo 22/04/2016, 14:06
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Mostrar datos de formulario por pantalla antes de enviar

Hola amigo,
y porque no lo haces en 2 pasos?
Se me ocurre que una vez llenado el formulario, el primer botón submit sea "Imprimir" (POR EJEMPLO) ..
La primera vez lo puedes cachar en un archivo "imprimir.php"... donde imprimiras los datos ingresados ... en ese mismo archivo puedes mostrar un 2do botón submit (Enviar), que envié los datos a un 2do archivo php donde ya harás el registro y demás...
yo me imagino un flujo así... quizá sea más complejo... de igual manera es una idea
Saludos!
  #6 (permalink)  
Antiguo 22/04/2016, 14:26
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Mostrar datos de formulario por pantalla antes de enviar

Si sabes hacer el formulario, enviarlo y recoger los datos ya lo tienes, solo que lo tienes que hacer en dos pasos.

Archivo de formulario

Código HTML:
Ver original
  1. <form action="imprimir.php" method="post">
  2.         Nombre:<input type="text" name="nombre"><br>
  3.         Apellidos:<input type="text" name="apellidos"><br>
  4.         Ciudad:<input type="text" name="ciudad"><br>
  5.         Otros datos: <textarea name="mas" id="" cols="30" rows="10"></textarea><br>
  6.         <input type="submit" name="enviar" value="Enviar">
  7.     </form>

Recogemos los datos imprimir.php y los mostramos en pantalla para que los confirme

Código PHP:
Ver original
  1. <?php  
  2.  
  3.         $nombre = $_POST["nombre"];
  4.         $apellidos = $_POST["apellidos"];
  5.         $ciudad = $_POST["ciudad"];
  6.         $mas = $_POST["mas"];
  7.  
  8.         echo $nombre . "<br>";
  9.         echo $apellidos . "<br>";
  10.         echo $ciudad . "<br>";
  11.         echo $mas . "<br>";
  12.  
  13.     ?>
  14.    
  15.  
  16.     <?php
  17.         if(!isset($_POST["confirmar"])) {
  18.     ?>
  19.             <form action="" method="post">
  20.             <input type="submit" name="confirmar" value="Confirmar">
  21.             </form>
  22.     <?php
  23.         }
  24.         else {
  25.             //procesamos en formulario
  26.         }
  27.      ?>

Mira a ver si funciona que no lo he probado. También puedes hacerlo todo en un único archivo
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #7 (permalink)  
Antiguo 23/04/2016, 04:21
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Mostrar datos de formulario por pantalla antes de enviar

Te ofrezco una solución alternativa en base a jQuery:

Código HTML:
Ver original
  1. <form id="TuForm" (y todo lo demás)>

Luego creas dos contenedores (o botones, o lo que quieras) con los ID correspondientes y listo.

Código Javascript:
Ver original
  1. $("#preview").click(function(e) {  
  2.     $('#TuForm').get(0).setAttribute('action', 'preview.php');
  3.     //Aquí haces lo que necesites, lo importante es establecer el action.
  4.     //Puedes hacer un .submit(), enviarlo por AJAX, etc.
  5. });
  6.  
  7. $("#publicar").click(function(e) { 
  8.     e.preventDefault();
  9.     $('#TuForm').get(0).setAttribute('action', 'publicar.php');
  10.     $('#TuForm').get(0).setAttribute('target', '_blank');
  11.     $("#TuForm").submit();
  12. });

Por cierto, no olvides asegurar TODOS y cada uno de los datos que vas a mostrar para evitar ataques de XSS.

Saludos.
__________________
¿Te sirvió la respuesta? Deja un +1

Etiquetas: css, form, formulario, html, pantalla, text, todo
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 08:48.