Foros del Web » Programando para Internet » PHP »

Set variables valid for several pages

Estas en el tema de Set variables valid for several pages en el foro de PHP en Foros del Web. Comunity, After 1 month of hart work, I just have bumped into a simple problem I dont know to resolve. I just need to set ...
  #1 (permalink)  
Antiguo 19/08/2005, 09:11
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Set variables valid for several pages

Comunity,

After 1 month of hart work, I just have bumped into a simple problem I dont know to resolve. I just need to set a variable and be able to use its value in other pages. For example if $variable1 = "sing" I would need to use that value in other pages ( of course $variable1 change depending of a form ).

My problem is that I only know to use variable values from one page to an other using $_POST or $_GET , and only form the first page to a second one, if I need this value in a third page, I lost it, so I need to know how to set a variable to use in other pages or how can I do to keep the value introduced in a form in more than a second page?.

Target: resolve the paginate problem in a search form. When the page show registers not coming form a previous form, pagination work perfectly, is when I .

I get the first result page correctly, with the right number of pages, but when you click the second or subsequent pages, the query doesnt run.

Here the code:

$nombre_campo = strip_tags(trim($_POST['nombre_campo']));
$edad_campo1 = strip_tags(trim($_POST['edad_campo1']));
$edad_campo2 = strip_tags(trim($_POST['edad_campo2']));
$pais_campo = $_POST['pais_campo'];
$ciudad_campo = strip_tags(trim($_POST['ciudad_campo']));
$sexo_campo = $_POST['sexo_campo'];
$peso_campo1 = $_POST['peso_campo1'];

.......

/* ############ */
CONNECTION
/* ############ */

/inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = strip_tags(trim($_GET["criterio"]));
$criterio = " where ( nombre like '%".$txt_criterio."%' OR anuncio like '%".$txt_criterio."%' OR edad like '%".$txt_criterio."%' OR aficcion like '%".$txt_criterio."%'
OR detesta like '%".$txt_criterio."%' OR peso like '%".$txt_criterio."%')";
}

//Limito la busqueda
$TAMANO_PAGINA = 4;

//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}

if ($orden_campo = '1')
{
$sql = "SELECT ..... THE QUERY

/* ############ */
SHOW OF DATA
/* ############ */

f ($total_paginas > 1)
{
for ($i=1;$i<=$total_paginas;$i++)
{
if ($pagina == $i)
{
// si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
}
else
{
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo "<a href='rdo_busqueda.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}
}

--------------------------------------------------------------------------------

The first page show the first registers correctly, and the number of total pages.

It is here when return to href='rdo_busqueda.php and the variables
$nombre_campo, $edad_campo1 , ... has no valu, as there is nothing coming from any form.

Sorry to my long explanation, I have tried to describe my problem the best way.

I would thanks if anybody could help me.
  #2 (permalink)  
Antiguo 19/08/2005, 10:01
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Español: Variables para varias páginas

El problema que tengo es conocer cómo usar una variable en varias páginas. Si tengo una variable con un valor que necesito utilizarla en otra página, no sé cómo conseguirlo, sólo conozco un medio de conseguir que una variable recogido de una página la puedas usar en otra, por medio de $_POST o $_GET , siempre que el valor se haya introducido mediante un formulario, y sólo puedo utilizar ese valor en una segunda página donde recojo ese valor, pero no en una tercera o posterior página, que es lo que yo necesito.

Exactamente lo que quiero es poder utilizar el valor de una variable recogida de un formulario, en más de una página.

Mi objetivo: Paginacion de la página que muestra los resultados de un formulario de búsqueda.

Cuando la paginacion la hago sobre todos los registros, es dcir, sin formularios de por medio, todo funciona perfectamente, muestra los registros por cada página sin problemas. Cuando en cambio, muestro los resultados de un formulario de búsqueda, la primera página muestra los primeros registros correctamente, y el número de páginas támbien, pero cuendo pinchas en alguna de ellas, no se puede procesar la query.

Me han comentado que por medio de variables de session pero no sé muy bien cómo utilizarlas.

Expongo el código utilizado:


$nombre_campo = strip_tags(trim($_POST['nombre_campo']));
$edad_campo1 = strip_tags(trim($_POST['edad_campo1']));
$edad_campo2 = strip_tags(trim($_POST['edad_campo2']));
$pais_campo = $_POST['pais_campo'];
$ciudad_campo = strip_tags(trim($_POST['ciudad_campo']));
$sexo_campo = $_POST['sexo_campo'];
$peso_campo1 = $_POST['peso_campo1'];

.......

/* ############ */
CONNECTION
/* ############ */

/inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = strip_tags(trim($_GET["criterio"]));
$criterio = " where ( nombre like '%".$txt_criterio."%' OR anuncio like '%".$txt_criterio."%' OR edad like '%".$txt_criterio."%' OR aficcion like '%".$txt_criterio."%'
OR detesta like '%".$txt_criterio."%' OR peso like '%".$txt_criterio."%')";
}

//Limito la busqueda
$TAMANO_PAGINA = 4;

//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}

if ($orden_campo = '1')
{
$sql = "SELECT ..... THE QUERY

/* ############ */
SHOW OF DATA
/* ############ */

f ($total_paginas > 1)
{
for ($i=1;$i<=$total_paginas;$i++)
{
if ($pagina == $i)
{
// si muestro el índice de la página actual, no coloco enlace
echo $pagina . " ";
}
else
{
//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo "<a href='rdo_busqueda.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}
}

-------------------------------------------------------------------

El problema es cuando se vuelve a la propia web href='rdo_busqueda.php y las variables $nombre_campo, $edad_campo1 , ... ya no tiene valor pues no hay un formulario de donde recogerlos. Necesitaría poder conservar los valores previos y poder utilizarlos posteriormente, esto solucionaría mi problema.

Siento haberme extendido en mi explicación .

Si alguien pudiera ayudarme, estaría muy agradecido.
  #3 (permalink)  
Antiguo 19/08/2005, 14:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Bienvenido a el foro HectorFA.

Puedes seguir acarreando el valor de tu variable por URL y usar $_GET, esta variable superglobal no solo recoje valores que provengan de un formulario sino todo aquello que se pase por URI, así pués puedes simplemente acarrearlo imprimiendolo en el los enlaces donde corresponda.

Ejemplo para comprobar que $_GET no se limita a el uso de formularios:
Código PHP:
<?php
if(empty($_GET['var'])) // vemos si existe el valor en la URI
      
$var=1// sino existe le asignamos uno
else $var$_GET['var']+1// Si existe lo tomamos y le sumamos 1

echo $var;
// imprimimos un enlace común que llamará a la misma página
// Pasamos en valor de $var por URI
echo "<br><a href=\"".$_SERVER['PHP_SELF']."?var=$var\">Sumar</a>";
?>
Otra opción, efectivamente, es el hacer uso de sesiones. No es nada complejo, simplemente tienes que iniciar sesión cada que vayas a ocupar variables de sesión tanto para asignar como para recojer y dichos valores debes pasarlos a traves de la variable superglobal $_SESSION.

Ejemplo anterior usando sesiones:
Código PHP:
<?php
session_start
(); // iniciamos sesión

if(empty($_SESSION['var'])) // vemos si existe variable de sesión
      
$var=1// sino existe le asignamos uno
else $var$_SESSION['var']+1// Si existe lo tomamos y le sumamos 1

$_SESSION['var']= $var// le asignamos el valor actual a la variable de sesión
echo $var;

// imprimimos un enlace común que llamará a la misma página
// Ya no es necesario pasar valor por URI
echo "<br><a href=\"".$_SERVER['PHP_SELF']."\">Sumar</a>";
?>
Hay más cosas a tener en cuenta respecto a el uso de sesiones, te aconsejo visites las FAQ ya que hay más de una que tratan sobre sesiones. En particular lee esta: http://www.forosdelweb.com/showpost....&postcount=129
Y claro, la documentación oficial: www.php.net/session

Ahora... solo te doy la información, personalmente me iria por pasar el valor por URI; usar sesiones sería complicarse cuando no es necesario...

Igual puedes ver lo que hace Paginator, un script de jpinedo, Colaborador de este foro: http://jpinedo.webcindario.com/scripts/paginator

Y como notas a el pie para que se te ayude mejor:
- Este es un foro de habla-hispana, te aconsejaria evitaras el uso de otros idiomas de no ser necesario.
- Ve el enlace de mi firma, el foro cuenta con etiquetas especiales para iluminar código y así sea fácil a la lectura.
- Postea en el foro indicado; tu consulta es referente a PHP en general no a GTK donde posteaste... es movido a el foro indicado.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 19/08/2005 a las 21:50
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 22:09.