Foros del Web » Programando para Internet » PHP »

Previsualizar datos de formulario

Estas en el tema de Previsualizar datos de formulario en el foro de PHP en Foros del Web. Buenas. Tengo una base de datos que se va rellenando automáticamente cada vez que algún usuario completa un formulario. Lo que yo quisiera es que ...
  #1 (permalink)  
Antiguo 19/06/2012, 15:41
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 7 meses
Puntos: 12
Previsualizar datos de formulario

Buenas. Tengo una base de datos que se va rellenando automáticamente cada vez que algún usuario completa un formulario. Lo que yo quisiera es que en la página siguiente el usuario pueda ver los datos enviados. Por algún motivo no me recupera los datos.

Tengo un formulario:
formulario.php
Código HTML:
<td width="468" align="left" bgcolor="#DFDFDF"><form method="post" name="form1" id="form1" action="grabafecha.php">
	
      <p class="Estilo42">Pa&iacute;s
        <select name="pais" onchange="redireccionar(this);">
            <option selected="selected" value="Argentina">Argentina</option>
            <option value="resto">Resto del Mundo</option>
          </select>
      </p>
      <p class="Estilo42">Fecha de Alquiler
        <input name="fechalq" type="text" size="7" id="fechalq" onclick="popUpCalendar(this, fecha0, 'yyyy/mm/dd');"/>   
        
      <p class="Estilo42">Fecha de Devoluci&oacute;n
        <input name="fechdev" type="text" size="7" id="fechdev" onclick="popUpCalendar(this, fecha1, 'yyyy/mm/dd');"/>    
        
        <input name="submit" type="submit" value="Buscar"/>
	
        </span> </p>

    </form></td> 
Luego grabo:

grabafecha.php
Código PHP:
<?php
$conexion
=mysql_connect("localhost","usuario","ARTI"
  or die(
"Problemas en la conexion");
mysql_select_db("usuario_tabla",$conexion) or
  die(
"Problemas en la seleccion de la base de datos");
mysql_query("insert into reserva(pais,fechalq,fechdev) values('$_REQUEST[pais]','$_REQUEST[fechalq]','$_REQUEST[fechdev]')"
   
$conexion) or die("Problemas en el select".mysql_error());
mysql_close($conexion);
?>
Y por último muestro los datos ingresados:

muestradatos.php
Código PHP:
<?php
    $pais1 
$_POST['pais'];
    
$fec1 $_POST['fechalq'];
    
$fec2 $_POST['fechdev'];
    echo 
$pais1;
        echo 
$fechalq;
        echo 
$fechdev;
    
?>
Algo debo estar haciendo mal porque no me trae ninguno de los datos. Entiendo que tal vez no sea el mejor método de mostrarlo porque si ingresan 2 consultas al mismo tiempo tal vez el PHP no sepa que mostrar, pero no se me ocurrió otra forma de hacerlo. ¿Alguna idea de qué estoy haciendo mal o cómo mejorarlo? Muchas gracias.
  #2 (permalink)  
Antiguo 19/06/2012, 15:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 2 meses
Puntos: 2534
Respuesta: Previsualizar datos de formulario

No, aquí el problema es, ¿como está incluyendo muestradatos.php para ello?

Porque en tu código no se ve cómo lo haces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/06/2012, 15:48
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 1 mes
Puntos: 528
Respuesta: Previsualizar datos de formulario

Si tienes dos script (grabafecha y muestradatos) es normal que se pierda la información de uno a otro, a menos que las conserves de alguna manera, pero con $_POST no podría ser, no de manera directa.
  #4 (permalink)  
Antiguo 19/06/2012, 15:56
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Previsualizar datos de formulario

@pateketrueke: No lo estoy incluyendo. Acabo de darme cuenta de ese error. ¿Poniendo un simple include ya debería conservar los datos?

@ocp001a: Claro, entiendo. Al pasar por grabafecha.php se pierden los datos y luego no los puede recuperar. Pero la ventaja es que esos datos ya quedaron grabados en la base. Tal vez usé mal la palabra previsualizar. No es una previsualización, sino una muestra de lo ya ingresado. Supongo que habrá un modo sencillo de recuperar esos datos de la base. El obstáculo que encuentro es que no sé cómo indicarle que me muestre los datos del último registro ingresado. Porque estos registros no tienen usuario como para hacer un filtrado. Debería mostrar el último, el que tenga el id más alto. La tabla también tiene un campo id que es auto_increment. ¿Se puede mostrar haciendo una llamada al de mayor id de toda la base? ¿O es muy complejo?

Muchas gracias a los dos.
  #5 (permalink)  
Antiguo 19/06/2012, 16:03
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 1 mes
Puntos: 528
Respuesta: Previsualizar datos de formulario

Si vas a mostrar lo ya capturado, en grabafecha puedes recuperar el id, con mysql_insert_id(), de manera que puedas redireccionar hacia muestradatos con dicho id:

$ultimoid=mysql_insert_id();

header("Location: muestradatos.php?id=$ultimoid");
  #6 (permalink)  
Antiguo 19/06/2012, 16:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 2 meses
Puntos: 2534
Respuesta: Previsualizar datos de formulario

@sjj Si, con el include debería funcionar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/06/2012, 22:57
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Previsualizar datos de formulario

Cita:
Iniciado por ocp001a Ver Mensaje
Si vas a mostrar lo ya capturado, en grabafecha puedes recuperar el id, con mysql_insert_id(), de manera que puedas redireccionar hacia muestradatos con dicho id:

$ultimoid=mysql_insert_id();

header("Location: muestradatos.php?id=$ultimoid");
Esto no termina de funcionarme. Creo que debo estar haciendo algo mal. El ID yo lo tengo en un campo llamado codigo. Entonces pongo:

Código PHP:
<?php $ultimoid=mysql_insert_id();

header("Location: muestradatos.php?codigo=$ultimoid");?>
y este código lo pego en muestradatos.php en el campo donde quiero que aparezcan los datos. Me devuelve dos errores:

Warning: mysql_insert_id() [function.mysql-insert-id]: A link to the server could not be established in /home/user/public_html/soft/pickup42.php on line 254

Warning: Cannot modify header information - headers already sent by (output started at /home/josper/public_html/soft/pickup42.php:6) in /home/user/public_html/soft/pickup42.php on line 256

¿Alguna idea de qué estoy haciendo mal? Las dos líneas que marcan errores son las que contienen lo que pegué en PHP. Gracias!
  #8 (permalink)  
Antiguo 21/06/2012, 23:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 2 meses
Puntos: 2534
Respuesta: Previsualizar datos de formulario

A ver, por favor te pido consultar la documentación porque mysql_insert_id() sólo funciona si la ejecutas inmediatamente después de ejecutar la consulta del INSERT, no antes, no después de redirigir, en el mismo script y de preferencia en el mismo contexto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/06/2012, 23:08
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Previsualizar datos de formulario

Disculpá. Hice una consulta sobre cómo obtener los datos en la tercer página y eso fue lo que me respondieron. Hice lo que entendí que me explicaron. Estuve leyendo sobre mysql_insert_id() pero no comprendo cómo funciona. Por eso hago la consulta. Perdón si es molestia.

Respecto a la idea del include creo que no me sirve porque me incluye toda la página y esa no es la idea, solo necesito recuperar los datos de la base. Disculpá nuevamente si te molesté.
  #10 (permalink)  
Antiguo 22/06/2012, 06:14
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Previsualizar datos de formulario

Puedes usar una variable de session, es lo que yo hago normalmente en los formularios de registros; cuando ocurre un error de validación, vuelvo a redirigir a el usuario a dicho formulario, en este paso las variables Post se pierden y el usuario debería volver a rellenar todos los datos nuevamente, por este motivo uso una variable de session para guardar los datos que el usuario ha escrito. Otra cosa que puedes hacer es hacerlo todo en un solo archivo en lugar de los 3 que usas, para esto puedes hacer comprobaciones de variables Post y GET, por ejemplo.

Código PHP:
<?php

session_start
();
$server $_SERVER['REQUEST_URI'];

if(!empty(
$_POST['pais']) && !empty($_POST['fechalq']) && !empty($_POST['fechdev'])){ // Si se reciben las variables, guardo la información
    
$conexion=mysql_connect("localhost","usuario","ARTI") or die("Problemas en la conexion");
    
mysql_select_db("usuario_tabla",$conexion) or die("Problemas en la seleccion de la base de datos");
    
mysql_query("insert into reserva(pais,fechalq,fechdev) values('$_REQUEST[pais]','$_REQUEST[fechalq]','$_REQUEST[fechdev]')"$conexion) or die("Problemas en el select".mysql_error());
    
mysql_close($conexion);
    
    
$pais1 $_POST['pais'];
    
$fechalq $_POST['fechalq'];
    
$fechav $_POST['fechdev'];
    
    
$array = array($pais1,$fechalq,$fechav);
    
$_SESSION['datos'] = $array;
    
    
header('location: '.$server.'?mostrar');
    
}else if(!isset(
$_GET['mostrar'])){ // Muestro el formulario
?> 

<td width="468" align="left" bgcolor="#DFDFDF"><form method="post" name="form1" id="form1" action="<?php echo $server?>">
    
      <p class="Estilo42">Pa&iacute;s
        <select name="pais" onchange="redireccionar(this);">
            <option selected="selected" value="Argentina">Argentina</option>
            <option value="resto">Resto del Mundo</option>
          </select>
      </p>
      <p class="Estilo42">Fecha de Alquiler
        <input name="fechalq" type="text" size="7" id="fechalq" onclick="popUpCalendar(this, fecha0, 'yyyy/mm/dd');"/>   
        
      <p class="Estilo42">Fecha de Devoluci&oacute;n
        <input name="fechdev" type="text" size="7" id="fechdev" onclick="popUpCalendar(this, fecha1, 'yyyy/mm/dd');"/>    
        
        <input name="submit" type="submit" value="Buscar"/>
    
        </span> </p>

    </form></td> 
    
<?php
    
}else{ // muestro los datos
    
        
$datos $_SESSION['datos'];
        
$pais1 $datos[0];
        
$fechalq $datos[1];
        
$fechav $datos[2];
        
        echo 
"Pais: ".$pais1.'<br>';
        echo 
"Fecha alquiler: ".$fechalq.'<br>';
        echo 
"Fecha devolucion: ".$fechav.'<br>'
        
    }

?>

Última edición por jeixuxspn; 22/06/2012 a las 06:34
  #11 (permalink)  
Antiguo 24/06/2012, 16:54
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Previsualizar datos de formulario

Gracias por tu sugerencia. Te comento que no puedo hacer eso de mostrar todo en una sola página ya que la página que muestra los datos, no solo los muestra. Además, se calcula la diferencia de días entre las dos fechas y se ve el costo total del servicio multiplicando el costo diario (que es una variable) por la cantidad de días a alquilar (que es un campo de una tabla). La idea era que además de ver los costos, el usuario pueda ver la selección que acaba de hacer por si cometió algún error. Por eso quería mostrar el último registro ingresado en la tabla o los últimos datos ingresados en el formulario. Muchas gracias, voy a seguir probando.
  #12 (permalink)  
Antiguo 25/06/2012, 04:19
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Previsualizar datos de formulario

Cita:
Iniciado por sjj Ver Mensaje
Gracias por tu sugerencia. Te comento que no puedo hacer eso de mostrar todo en una sola página ya que la página que muestra los datos, no solo los muestra. Además, se calcula la diferencia de días entre las dos fechas y se ve el costo total del servicio multiplicando el costo diario (que es una variable) por la cantidad de días a alquilar (que es un campo de una tabla). La idea era que además de ver los costos, el usuario pueda ver la selección que acaba de hacer por si cometió algún error. Por eso quería mostrar el último registro ingresado en la tabla o los últimos datos ingresados en el formulario. Muchas gracias, voy a seguir probando.
No tienes por que hacerlo todo en un solo archivo, aunque por poder se puede claro que si. En el ejemplo que te puse, está la manera de hacer lo que buscas, solo necesitas abrir una session donde guardas los datos que ha introducido el usuario, y luego lees los datos en el archivo visualizar.php o como lo llames. Es decir en formulario.php tienes que:

1) abrir una session -> start_session
2) guardar los datos en un array
3) guardar en tu session el array $_SESSION['nombre de tu session'] = $array;

y en visualizar.php:

1) abrir una session -> start_session
2) sacar el array de la session $array = $_SESSION['nombre de tu session'];
3) recorres el array para leer los datos y posteriormente visualizarlos.

Todo esto está en el ejemplo que te puse. Si quieres que el usuario pueda cambiar los datos, por si se ha equivocado, lo correcto sería no guardarlos en la base de datos hasta que el usuario haya hecho la comprobación, es decir visualizar.php debería insertar los datos.

Saludos,

Última edición por jeixuxspn; 25/06/2012 a las 04:27

Etiquetas: formulario, mysql, previsualizar, sql, tabla, usuarios
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 21:42.