Foros del Web » Programando para Internet » PHP »

No se puede mostrar la página

Estas en el tema de No se puede mostrar la página en el foro de PHP en Foros del Web. Hola a tod@s: Resulta que en mi web tengo un formulario para realizar una búsqueda y se podrán elegir una serie de filtros. Cuando pincho ...
  #1 (permalink)  
Antiguo 12/04/2005, 04:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 5 meses
Puntos: 1
No se puede mostrar la página

Hola a tod@s:

Resulta que en mi web tengo un formulario para realizar una búsqueda y se podrán elegir una serie de filtros. Cuando pincho el botón de buscar el action del form sera un archivo mostrarbusqueda.php. El inicio del archivo lo tengo como:

<?php if (isset($enviar)) {
..............
donde $enviar es el nombre que le tengo asignado al botón del formulario.


Me muestra la búsqueda perfectamente y para cada registro que me muestra tengo varias opciones.Entre ellas por ejemplo editar un registro que me funciona correctamente y salta al archivo editarregistro.php. Ahora bien, desde editarregistro.php tengo una opción de volver atrás(es decir, a la búsqueda que realice) con la instrucción:

<center>[ <A HREF='mostrarbusqueda.php'>Volver</A> ]</center>

Pero me ocurre un problema, que la búsqueda no aparece y me muestra un mensaje de que no se puede mostrar la página. ¿Qué ha pasado? ¿La variable $enviar ya no existe?¿No se almacena la página de mostrarbusqueda en una caché o algo similar para que se pueda seguir mostrando?.

Es la duda que tengo,cómo solucionar este problemilla de que me salga la página de mostrarbusqueda y no la otra en blanco diciendo que no se puede mostrar la página. Espero que alguien pueda ayudarme al respecto. Muchas gracias y un saludo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #2 (permalink)  
Antiguo 12/04/2005, 06:05
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Podrias probar algo asi. Esto creo que te vuelve a la pagina anterior sin realizar la recarga de la busqueda. No en todos los casos anda, depende de las acciones que ejecutas antes.

<a href="javascript:history.back()">Volver</a>

Probalo.
Saludos
  #3 (permalink)  
Antiguo 12/04/2005, 14:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 5 meses
Puntos: 1
Ya lo probé y me sigue saliendo la misma página, no se puede mostrar
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #4 (permalink)  
Antiguo 13/04/2005, 09:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
¿No se almacena la página de mostrarbusqueda en una caché o algo similar para que se pueda seguir mostrando?.
No, .. el ambito de las variables de un script en PHP es sólo la vida de este. Es decir .. de principio a fin de tu código ahí puedes trabajar con tus variables .. sean que las origines ahí mismo o llegan desde otros médios como por ejemplo de un formulario (por método POST/GET) .. por un URL (GET) .. etc.

Si necesitas tener unas varaibels PHP para N scripts PHP de una secuencia (como parece que es tu caso) de ejecución de estos . .tendrás que usar sesiones o cookies para tal fin.

Esa sería una manera de "propagar" tus variables .. pero podría ser también por el URL o en un formulario en campos hidden .. tipo:

Por el URL
tomas tus variables y compones el nuevo link hacia el siguiente script:
Código PHP:
<a href="nose.php?variable_propagada="<? echo $_POST['variable_propagada'?>">nose.php</a>
O en un formulario nuevamente . .en un campo hidden:
Código PHP:
<input type="hidden" name="variable_propagada" value="<? echo $_POST['variable_propagada']?>"
Depende del caso .. te vendrá bien propagar por el URL o bien usar sesiones (www.php.net/session)

Por lo demás .. estaría bueno que pongas el código completo que usas de los scripts implicados .. ahí será mejor aconsejarte que usar y como.

Un saludo,
  #5 (permalink)  
Antiguo 13/04/2005, 17:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 5 meses
Puntos: 1
El caso es que tengo un formulario para filtrar los criterios de búsqueda y al botón de buscar lo llamo buscar. El action del form llama a mostrarbusqueda que comienza de la siguiente manera:

<?php
include("../verifica.php");
include("../conexion.php");
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL="stylesheet" TYPE="text/css" HREF="../estilo.css">
</head>
<body>
<?php

if (isset($_POST['buscar'])) {
echo "<h2 align=center>Resultados de la Búsqueda</h2><hr>";
......................................

Aquí te muestra la búsqueda pero se pueden editar los registros que han salido de la búsqueda y cuando le doy a editar me sale otra página y todo funciona muy bien pero cuando si por ejemplo estoy en la edición y por lo que sea le doy al botón Atras del navegador web me sale la pantalla de no se puede mostrar página, ya que supongo que la variable buscar al no provenir del método post ya no existe y por eso no me sale la búsqueda.
Yo he visto en todas las webs que eso no sucede y cuando le doy al botón atrás del navegador se sigue mostrando la información. ¿Habrá que almacenar la variable buscar en una variable de sesión? Lo malo que si la ejecución entra por el if (isset($_POST['buscar'])) se haría una consulta a la base de datos para mostrar la búsqueda por los campos que seleccioné en el filtro. ¿Dichos campos tampoco estarían disponibles como le pasa a la variable buscar?

Espero haberme explicado mas o menos bien, a ver si podéis echarme una mano. Muchas gracias a tod@s y un saludo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #6 (permalink)  
Antiguo 13/04/2005, 17:54
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 19 años
Puntos: 0
Una solución sencilla sería enviar los términos de búsqueda por el query string, o sea por GET en vez de por POST, de esta forma, cuando haces el history.back() que te sugirió MartínTandil, los términos de la búsqueda están en la URL, así que la búsqueda se efectúa de nuevo, y para el cliente que lo está usando es como si nada hubiera pasado.

Así qeu tu formulario utilizaría como método de envío GET y en el chequeo de si se hizo la búsqueda preguntarías por $_GET['buscar']

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #7 (permalink)  
Antiguo 14/04/2005, 04:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 5 meses
Puntos: 1
Muchas gracias elmaster, funciona!!!

Una cosilla más, el formulario de búsqueda lo tengo puesto de la siguiente manera:

Un checkbox para cada opción y si quiero filtrar elijo los checkbox que yo quiera y despues elijo la opción a través de listas despegables de lo que quiero elegir. Así me sale en la url todas las variables con su valor independientemente de si he elegido el checkbox o no, ¿esto se podría quitar?, es decir, ¿se podrían pasar las variables por get y no mostrarse en la url o mostrarse codificadas o algo?

Bueno,esto es más bien por estética, ya que se pasan a lo mejor variables que después no se van a utilizar en la búsqueda.

Muchas gracias de nuevo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #8 (permalink)  
Antiguo 14/04/2005, 06:34
alt
 
Fecha de Ingreso: abril-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Cita:
Iniciado por elmaster
Una solución sencilla sería enviar los términos de búsqueda por el query string, o sea por GET en vez de por POST, de esta forma, cuando haces el history.back() que te sugirió MartínTandil, los términos de la búsqueda están en la URL, así que la búsqueda se efectúa de nuevo, y para el cliente que lo está usando es como si nada hubiera pasado.

Así qeu tu formulario utilizaría como método de envío GET y en el chequeo de si se hizo la búsqueda preguntarías por $_GET['buscar']

Saludos!

hola elmaster, tengo el mismo problema, un formulario con muchos datos, lo
lleno, lo paso a otro php que verifica datos, etc, si tengo que volver con
history.back() me sigue dando "la pagina ha caducado".
mando todo por GET, de hecho imprimo el $_SERVER['QUERY_STRING'], estan
todas las variables ahi,
no veo en la URL las variables.. como aqui

"http://www.forosdelweb.com/newreply.php?do=newreply&p=1050642"

alguna idea.
gracias.
  #9 (permalink)  
Antiguo 14/04/2005, 07:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sólo añadir a tu propuesta que los datos que se pueden propagar por el URL no son limitados y su tamaño es muchooo menor que lo que se puede propagar por POST .. además que "estéticamente" no se veran esos datos danzando en el URL.

Yo sigo insisitiendo en el uso de sesiones para propagar "de vuelta" estas variables del script de proceso a al formulario ..

Ejemplo:

procesar.php
Código PHP:
<?
session_start
();
// validas tus variables $_POST .. etc .. 

// Si hay error al validar:
// todo el array superglobal a una variable de sesión
$_SESSION['variables']=$_POST;
// y redireccionamos al formulario
header("Location: formulario.php");
?>
formulario.php
Código PHP:
<?
session_start
();
$variables=$_SESSION['variables'];
?>
<form .....>
<input type="text" name="nose" value="<? echo $variables['nose'?>">
</form>
Eso si, .. esto no evitará el problema de que el usuario al dar hacia atras en su navegador va a tener un formulario "vacio" .. Lo podrías gestionar con sesiones también usando una variable de control para tal fin . .pues al formulario en teoría se accede desde otra página de tu sitio. Si se puede acceder directo .. y no deseas usar GET (pasando tus variables por el URL) entonces no tienes otra ... precupate de que tu aplicación "lleve" a tu usuario por el lógico proceso de tus páginas ...

Un saludo,
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 03:47.