Foros del Web » Programando para Internet » PHP »

Listar campos de un form

Estas en el tema de Listar campos de un form en el foro de PHP en Foros del Web. Buenas. Pues vereis, tengo una página llamada Formulario.php en el cual tengo un formulario que envía los campos introducidos a Proceso.php. // Esta es la ...
  #1 (permalink)  
Antiguo 16/02/2012, 05:00
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Listar campos de un form

Buenas.
Pues vereis, tengo una página llamada Formulario.php en el cual tengo un formulario que envía los campos introducidos a Proceso.php.

// Esta es la cabecera del form
<form id="formulario" name="formulario" onsubmit="return validar()" method="post" action="Resultado.php" enctype="multipart/form-data">

El caso es que ahora necesito, en la primera página (Formulario.php), crear un listado debajo del formulario con los datos enviados a Proceso.php
Los datos enviados a Proceso.php están por POST de la siguiente forma:
// Campos del formulario
$nombre =$_POST['nombre'];
$apellidos =$_POST['apellidos'];
$email =$_POST['email'];
$sexo =$_POST['sexo'];
$edad =$_POST['edad'];
$notificacion =$_POST['notificacion'];
$adjunto =$_FILES['adjunto']['name'];

El caso es que no sé como se hace una consulta a otra pagina (proceso.php) sin que sea a una tabla de una BD. La consulta se creará en Formulario.php, los datos se consultarían a proceso.php y se volverían a mostrar en Formulario.php debajo del formulario.

No sé si me he explicado bien, me resulta un poco lioso...
Gracias de antemano, llevo media mañana peleandome pero lo que encuentro me resulta demasiado complejo y no encuentro lo que quiero esactamente. Hace poco que empecé con php y aún soy novata.
  #2 (permalink)  
Antiguo 16/02/2012, 05:27
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Veamos....

Lo q quieres es:

·Formulario.php->envia datos a proceso.php -> vuelve a enviar datos a formulario.php ?
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 16/02/2012, 05:30
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Exacto.
Introduzco campos en formulario.php, los envío a proceso.php y los vuelvo a recoger en u listado en formulario.php
  #4 (permalink)  
Antiguo 16/02/2012, 05:44
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Puedes actuar de dos formas...


O bien, el "proceso.php" lo haces dentro de formulario.php (Básicamente, añades la lógica del proceso (q sera insertar en una bbdd o algo a formulario.php SÓLO cuando exista un submit del form). Asi, el action del form, en vez de ser proceso.php pasaría a ser formulario.php

O si en proceso.php NO muestras nada, puedes hacer un
Código PHP:
header("Location: formulario.php"); 
Lo cual hace una redireccion a formulario.php. Eso sí, NO pasa los datos via POST/GET (a proceso.php sí, pero de vuelta a formulario.php, NO)

No sé si te he aclarado algo, o te he liado más xD
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 16/02/2012, 05:58
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Bien gracias, me has aclarado muchísimo.

Pues ya estuve mirando la 2º opción que planteas, con el HEADER... pero el caso es. Si dices que mediante POST/GET los datos pasan de formulario.php a proceso.php, pero luego a la inversa no, ¿como recojo el resultado de la consulta hecha a proceso.php para mostrarla en formulario,php?

Mi intención es que proceso.php no muestre nada en pantalla, sólo que haga las operaciones pertinentes para recibir los datos del form, guardarlos, y que luego la consulta enviada desde formulario.php pueda leerlos y mostrarlos.

Si me puedieras poner un pequeño ejemplo o un enlace donde expliquen esto, para así verlo más claro, te lo agradecería (aún más xd) pq le estoy dando muchas vueltas y voy a enloquecer

Muchas gracias aún así. Si quieres que te pegue el código de lo q tengo en formulario y proceso avisa :)
  #6 (permalink)  
Antiguo 16/02/2012, 06:04
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Existe una forma.


Pongamos por ejemplo, que en formulario pones "Nombre" y "Edad", simplemente, y lo guardas en una BBDD

La BBDD la tabla es "datos", y el esquema, el siguiente
id (autoincrement int primary)| nombre (varchar 255) | edad (int)

En proceso.php tendrás algo así
Código PHP:
$link conexion_a_la_base_de_datos();
$nombre $_POST['nombre'];
$edad $_POST['edad'];

$sql "INSERT INTO `datos` VALUES (default, '$nombre', $edad)";
mysql_query($sql$link); 
Podrías añadir algo así
Código PHP:


$link 
conexion_a_la_base_de_datos();
$nombre $_POST['nombre'];
$edad $_POST['edad'];

$sql "INSERT INTO `datos` VALUES (default, '$nombre', $edad)";
mysql_query($sql$link);

$id mysql_insert_id($link); //Obtienes el campo id del ultimo INSERT

header("Location: formulario.php?id=$id"); 
¿Que ganamos? Ahora pasas por GET el campo ID, que viene a ser el último valor que has insertado en la tabla.

En formulario.php puedes recibirlo, y mostrar esa linea ;)

No se si me he explicado :)
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 16/02/2012, 06:34
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

aham, vale veo por donde van los tiros :) Probaré todo eso y a ver que saco. Aún así yo estaba trabajando sin base de datos, pero igual debería crearla para luego hacer la consulta, ya que de la forma que lo tengo, digamos que los datos están en "el aire" dentro de Proceso.php, y a la hora de hacer la consulta, no hay a donde hacerla pq no existe la tabla. Tiene lógica no? XDDD

Muchas gracias, crearé la bbdd con la tabla y sigo avanzando. Aún así te dejo la screen del formulario y de proceso:
FORMULARIO.PHP
http://data.imagup.com/11/1144061156.png

PROCESO.PHP
http://data.imagup.com/10/1144061254.png
  #8 (permalink)  
Antiguo 16/02/2012, 09:27
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Evidentemente, los datos deberías guardarlos en algun sitio.


O bien en un archivo, o en una base de datos... normalmente, suele ser mejor opción la segunda ;)

Edit: Veo que es un ejercicio... si sólo necesitas mostrar "El ultimo" registro mandado por el usuario, puedes usar mejor las variables de SESSION... no tienes que usar BBDD, y es más cómodo!
__________________
>> Eleazan's Source
>> @Eleazan
  #9 (permalink)  
Antiguo 16/02/2012, 09:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Efectivamente, bien, empezamos a entendernos jaja. Pues así es, no necesito tener guardados registros introducidos anteriormente, con tener sólo el último "submit" y mostrarlo ya me llega.
Es un ejercicio que me han puesto en las prácticas del FP. EL caso es que nunca di programción web y estoy algo perdido, aunque poco a poco voy viendo como funciona este mundo :)

Miraré a ver como funcionan las variables de session. Mil gracias de nuevo
  #10 (permalink)  
Antiguo 16/02/2012, 10:02
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

En ese caso, es más "sencillo" tenerlo todo en el mismo archivo.


Si en formulario.php pones algo así
Código PHP:

if(isset($_POST['nombre'])) {
    
//Aqui la lógica de procesar (mandar el mail!)
    
form_mail(blablabla);
    
//Ahora lo que quieras mostrar:
    
echo 'Ultimo envio: '.$nombre;   


Lo tienes todo en un archivo. Sin usar BBDD, sin usar archivos, sin usar sesiones... y con la ventaja de que si envias el formulario, conoces los datos enviados! :)
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 16/02/2012, 10:09
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Justo encontré un ejemplo similar hace unos minutos. Voy a intentar implementarlo en mi código.
El caso es que tengo que trabajar con dos archivos si o si, como te dije antes, con Formulario.php y Proceso.php
En eso consiste el ejercicio, en enviar a otro php los datos y listarlos de nuevo en el primero.
  #12 (permalink)  
Antiguo 16/02/2012, 10:16
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Cita:
Iniciado por Arraymoon Ver Mensaje
Justo encontré un ejemplo similar hace unos minutos. Voy a intentar implementarlo en mi código.
El caso es que tengo que trabajar con dos archivos si o si, como te dije antes, con Formulario.php y Proceso.php
En eso consiste el ejercicio, en enviar a otro php los datos y listarlos de nuevo en el primero.
Si no quieres complicarte, lo puedes pasar TODO por GET al formulario (después de procesarlo!). Almenos, la info que te interese

¿Qué tienes q volver a mostrar? ¿Sólo "Se ha enviado correctamente el formulario"? o ¿"Gracias fulanito por mandarlo"? ¿O todos los datos otra vez?
__________________
>> Eleazan's Source
>> @Eleazan
  #13 (permalink)  
Antiguo 16/02/2012, 10:32
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Pues los mismos datos que introduzco en el formulario y los envio al otro archivo (página) volver a mostrarlos en una lista debajo del formulario.
En la siguiente ejemplo aparece el formulario que cree y debajo iria la lista con los campos.
http://data.imagup.com/12/1144075071.png

Ahora estoy mirando como, una vez enviados los datos a Proceso.php, como hacer para que en vez de quedárseme el navegador en www.----.com/proceso.php vuelva a Formulario.php y muestre el listado debajo del form. Porque en la etiqueta form tengo el ACTION = proceso.php. Para ello estoy mirando lo de las sesiones.

:) vaya liooo jajaja, pero voy avanzando, soy un poco terca para esto del web
  #14 (permalink)  
Antiguo 16/02/2012, 10:40
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Nadie nace sabiendo! :)

Por "sessiones" es más limpio que por get! :)

Para la redirección, puedes usar esto:

Código PHP:
//Aqui guardamos las variables en la session
blablabla
//Redireccionamos!
header("Location: formulario.php"); 
Así vuelves a formulario.php. Una vez allí, ya te encargarías de controlar las sessiones, y saber si ya antes has mandado algun formulario ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #15 (permalink)  
Antiguo 16/02/2012, 10:54
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Ahora mismo estoy probando sólo si funciona el Header y me devuelve a formulario.php Luego ya le pondré para que muestre los resultados con los campos. EL caso es que me está dando este error con el header:

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/server.com/web/Proceso.php:8) in /usr/home/server.com/web/Proceso.php on line 75

La línea 75 es donde tengo el 'header'. Y lo tengo así:

<?php header("Location: Formulario.php");?>
</body>
</html>
  #16 (permalink)  
Antiguo 16/02/2012, 10:58
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form



Ese error es pq cuando usas header, no puedes enviar NADA a la salida del navegador.

Es decir, nada de código html, ni echo, ni print_r ;)

(Y de todas formas, no tiene sentido "redirigir" sin mostrar una pagina q estás mostrando...)
__________________
>> Eleazan's Source
>> @Eleazan
  #17 (permalink)  
Antiguo 16/02/2012, 11:11
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Bueno ahora si que me perdí XDDDD que me diga el tutor como quiere que haga, lo que el quiere que haga, que para eso está.

MI ultimo try fue este. No se si tiene sentido lo que hice pq estoy cambiando cosas todo el rato.Mi intención es que con el Header vuelva al archivo formulario.php y a continuacion muestre los datos introducidos en el mismo. El echo me funciona, sólo que no lo muestra en formulario.php. Da el error que puse antes y a continuacion pinta el echo... Gracias por toda la ayuda, no te molesto más, que me diga como se hace y te digo yo que no se me olvida never in the life.

<?php
header("Location: ejercicio_form1.php");
?>
<table>
<tr>
<th><strong> NOMBRE </strong></th>
<th><?php echo $nombre=$_POST['nombre']?></th>
</tr>
</table>
</body>
</html>
  #18 (permalink)  
Antiguo 16/02/2012, 11:14
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Listar campos de un form

Veamos.


Cuando haces

Código PHP:
header("Location: formulario.php"); 
Le estás diciendo a tu navegador que se vaya a formulario.php. El script php "se detiene" en ese momento (proceso.php), y pasas a cargar el location (formulario.php).

Por eso no tiene sentido poner una tabla después del header. Ni q haya salida antes pq no la llega a mostrar ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #19 (permalink)  
Antiguo 16/02/2012, 11:31
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Vale, tiene sentido que si lo mando a formulario.php no me va a mostrar la talba....
Pues me seguiré peleando para hacer el listado, aunque me voy a tomar un kit kat que me estalla la cabeza :P

Muchas gracias por todo Eleazan Cuando lo tenga hecho lo publicaré :)


Resulta que había entendido yo mal el enunciado del ejercicio. El listado con los campos introducidos en el formulario lo tengo que colocar antes del submit, es decir, tengo que mostrar el listado antes de que vaya al segundo archivo (Proceso.php)

Última edición por Arraymoon; 17/02/2012 a las 02:29
  #20 (permalink)  
Antiguo 17/02/2012, 04:23
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Deduzco que tengo que crear un botón más para listarlos, pq tal y como lo tengo ahora mismo las únicas opciones que hay una vez introducidos, es enviarlos a Proceso.php con el boton submit o limpiar los campos del form. No sé si con un boton hidden que lo haga automáticamente una vez introducidos podría hacer el listado, no le encuentro la lógica de como tiene que ser...
Gracias.
  #21 (permalink)  
Antiguo 17/02/2012, 04:29
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Listar campos de un form

Lo que quieres hacer lo puedes lograr por medio de ajax, envias el formulario a proceso.php y en este mismo imprimes las variables que puedes plasmar en un div dentro de formulario.php, de igual manera Eleazan esta en lo correcto, puedes guardar las variables $_POST en $_SESSION y asi puedes obtenerlas en formulario una vez que proceso.php realize las operaciones.
  #22 (permalink)  
Antiguo 17/02/2012, 04:42
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Actualmente tal y como lo tengo, muestro los resultados del form en proceso.php en una tabla. Pero supuestamente debería mostrarlos antes de enviarlos, es decir, antes de darle al boton enviar, debería hacerme el listado. No sé si me explico, todo en formulario.php. Una vez mostrado el listado, le daría a enviar y ya me iría a proceso.php donde volverían a salir los datos dibujados en una tabla y tb los envío por mail.
Básicamente los pasos a seguir serían: Introducir campos en form -> listar esos campos -> enviarlos a proceso.php con el boton submit...
(aunque no sé si tiene sentido lo que digo, pq no sé como listar unos campos que no he almacenado en ningún sitio, sólo están metidos en un form)
Si necesitas ver el código que tengo o algo más avisa.
Muchas gracias 4 la ayuda, estoy pez en php, estoy aprendiendo y estoy bastante perdida :(
  #23 (permalink)  
Antiguo 17/02/2012, 05:20
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Listar campos de un form

esto puedes hacerlo con jquery, no php, primero asignale un id a cada input de tu formulario, despues asigna un div oculto por cada input que tengas (<div id="campo1" style="display:none"></div>), posteriormente creas al final de tu archivo un script (<script></script>) dentro de este script colocas lo siguiente por cada campo que tengas

Código:
<script>
    $("#iddelinput").focusout(function(e){

        valor = $("#iddelinput").attr("value");
        if (valor == ""){
            $("#campo1").hide();
        }else{
            $("#campo1").html(valor);
            $("#campo1").show();
        }
    }
</script>
incluye esta linea en tu archivo si aun no tienes jquery:

Código:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
de esta manera te va a ir desplegando los datos de tu formulario en cuanto lo vas llenando.

Si tienes alguna duda hazmelo saber.
  #24 (permalink)  
Antiguo 17/02/2012, 05:31
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: Listar campos de un form

Gracias por vuestra ayuda, pero creo que voy a esperar a que el tutor me diga que es exactamente como lo quiere, pq supuestamente tengo que hacerlo utilizando sólo php, nada de ajax, ni jquery ni nada, y según él es algo muy sencillo, asique seguramente soy yo que no sé bien que s lo que tengo que hacer y me esta liando más de la cuenta.

Etiquetas: campos, formulario, tabla
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 18:05.