Foros del Web » Programando para Internet » PHP »

No pasa la variable y no funciona el paginador

Estas en el tema de No pasa la variable y no funciona el paginador en el foro de PHP en Foros del Web. Hola a todos. Me pasó algo raro con este paginador que hice. Tengo un archivo buscador.php con un formulario el cual pasa el idtipopropiedad por ...
  #1 (permalink)  
Antiguo 25/03/2009, 16:21
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
No pasa la variable y no funciona el paginador

Hola a todos. Me pasó algo raro con este paginador que hice.

Tengo un archivo buscador.php con un formulario el cual pasa el idtipopropiedad por GET, que en este caso es 1.
La página search.php recoge el ID y lo utiliza para buscar los resultados en la BDD.
La página search.php me muestra de a 4 los resultados por página y en este caso, el paginador me dice que hay 3 páginas con el idtipopropiedad solicitado pero me di cuenta que solo puedo cambiar 1 sola vez de página porque después, el idtipopropiedad que debería aparecer en el link, ya no aparece.

El resultado me aparece linkeado así:
http://search.php?pag=2&idtipopropiedad=1

Al seleccionarlo me aparecen perfectos los resultados, pero si quiero voilver atrás, el link me aparece de esta forma:
http://search.php?pag=1&idtipopropiedad=

Les paso las consultas y los códigos que tengo:

search.php
Código PHP:
if(isset($_GET['searchprop']))

// declarar variables los datos del formulario
$idtipopropiedad $_GET['id_tipopropiedad'];

$condiciones "";
if (
$idtipopropiedad != ""$condiciones .= " AND propiedades.id_tipopropiedad = $idtipopropiedad";

$pag $_GET['pag'];        
        if (!isset(
$pag)) $pag 1// Por defecto, pagina 1
        
$sql "SELECT COUNT(*) FROM propiedades WHERE propiedades.id_tipopropiedad = tipopropiedad.id_tipopropiedad $condiciones ORDER BY id_propiedad";

$result mysql_query($sql$conexion);

        list(
$total) = mysql_fetch_row($result);
        
$tampag 4;
        
$reg1 = ($pag-1) * $tampag;

        
$result mysql_query("SELECT * FROM propiedades WHERE propiedades.id_tipopropiedad = tipopropiedad.id_tipopropiedad $condiciones ORDER BY id_propiedad LIMIT $reg1, $tampag"$conexion) or die (mysql_error());

// Acá me muestra los resultados...


// Paginador
function paginar($actual$total$por_pagina$enlace) {

  
$pag $_GET['pag'];
  
$idtipopropiedad "&idtipopropiedad="$_GET['id_tipopropiedad'];


  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior$idtipopropiedad\" > ANTERIOR</a> ";
  else
    
$texto "<b>ANTERIOR</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i$idtipopropiedad\" >$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i$idtipopropiedad\" >$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior$idtipopropiedad\" >SIGUIENTE </a>";
  else
    
$texto .= "<b>SIGUIENTE</b>";
  return 
$texto;

        
// Cierro la conexion
        
mysql_close($conexion); 

}

echo 
paginar($pag$total$tampag"prop-search.php?pag="); 
Espero que sea una pavada y que me puedan decir donde me estoy equivocando.

Muchas gracias a todos y salutes.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 25/03/2009, 16:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: No pasa la variable y no funciona el paginador

Notas la diferencia entre variables?

search.php?pag=2&idtipopropiedad=1
$_GET['id_tipopropiedad']
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 25/03/2009, 16:52
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: No pasa la variable y no funciona el paginador

emmmmmm........ quiere decir que no está bien? No sé si lo interpreté, pero desde el formulario, envío el id_tipopropiedad hacia el search.php y es por eso que lo recojo de esa forma:

$idtipopropiedad = $_GET['id_tipopropiedad'];

... o entendi mal :P. Gracias
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 25/03/2009, 17:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: No pasa la variable y no funciona el paginador

En la URL mandas idtipopropiedad SIN guion bajo, en $_GET debes recogerlo exactamente igual, SIN guion bajo, porque ahora lo tienes asi: $_GET['id_tipopropiedad']; CON un guion bajo entre id y tipopropiedad.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 25/03/2009, 18:28
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: No pasa la variable y no funciona el paginador

Triby: nop... no funciona. Ahora directamente el idtipoproducto me aparece vacío y antes me dejaba cambiar 1 sola vez de página.

De esta forma no me funcionó:

$idtipopropiedad = "&idtipopropiedad=". $_GET['idtipopropiedad'];

Yo lo había puesto de esta forma para que la variable $idtipopropiedad guarde el valor $_GET['id_tipopropiedad']; ya que éste valor es el que viene del formulario donde está el buscador y es el campo con el contenido que trae de la base de datos: campo id_tipopropiedad (valor 1).

Este valor lo tomo de una lista que se encuentra en el buscador:
Código PHP:
echo "<select name='id_tipopropiedad' id='id_tipopropiedad' >";
while (
$row mysql_fetch_array($consulta2))
{
echo 
'<option value='.$row["[B]id_tipopropiedad[/B]"];
echo 
' >';
echo 
$row["desc_tipopropiedad"];
echo
'</option>';
}
echo 
'</select>'
Lo que me parece raro es que puedo paginar 1 sola vez y después es como que desaparece el contenido de la variable $idtipopropiedad... cosa rara.

Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #6 (permalink)  
Antiguo 25/03/2009, 19:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: No pasa la variable y no funciona el paginador

A ver, por partes, lo unico que tenias que cambiar desde el principio era quitar el guion en $_GET['id_tipopropiedad'] porque en la URL lo estas poniendo sin guion:

como aqui:
$idtipopropiedad = "&idtipopropiedad=". $_GET['id_tipopropiedad'];

Si lo quieres con guion, entonces usa esto:
$idtipopropiedad = "&id_tipopropiedad=". $_GET['id_tipopropiedad'];

Consejo, si vas a usar un identificador para variable, indice de matriz o alguna otra cosa adicional a la vez SIEMPRE USA EL MISMO para evitarte estos dolores de cabeza.

Opcion rapida para corregir tu codigo:
- Revisa como se llama el campo en tu tabla, ya sea con guion o sin guion
- En tu editor de texto favorito, incluido Notepad de windows hay una opcion para reemplazar

Si el campo en la tabla tiene guion:
1- Menu -> Edicion -> Reemplazar
2- En el texto a buscar pones idtipoproducto
3- En el texto de reemplazo pones id_tipoproducto
4- Haces click en el boton "Reemplazar todos" (o similar)
5- voila!!!
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 26/03/2009, 07:45
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: No pasa la variable y no funciona el paginador

Triby: efectivamente ahí estaba mi error. Ahora sí me funcionó

Hice lo que me aconsejaste y desde ahora tomo ese consejo para tenerlo en cuenta en todos mis proyectos de aquí en más y así evitar estos dolores de cabeza como tú dices.

Muchísimas gracias por tu tiempo y por tu ayuda.

Un cordial abrazo. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
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 13:01.