Foros del Web » Programando para Internet » PHP »

Error en paginador - No carga la siguiente página

Estas en el tema de Error en paginador - No carga la siguiente página en el foro de PHP en Foros del Web. Hola a todos! Cómo están? Tengo un paginador que de una manera me funciona y de otra no... Les muestro mi código: Código PHP: include ( ...
  #1 (permalink)  
Antiguo 26/06/2008, 16:22
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Error en paginador - No carga la siguiente página

Hola a todos! Cómo están? Tengo un paginador que de una manera me funciona y de otra no...

Les muestro mi código:
Código PHP:
include ("con.php");

$hm $_GET['hm'];
$tipoart $_GET['tipoart'];    

// conexion a la base
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");

        if (!isset(
$pag)) $pag 1// Por defecto, pagina 1
        
$result mysql_query("SELECT COUNT(*) FROM articulos, hombre_mujer, tipo_articulo 
WHERE articulos.id_hm = hombre_mujer.id_hm
 AND articulos.id_tipoart = tipo_articulo.id_tipoart AND articulos.id_hm = $hm 
AND articulos.id_tipoart = $tipoart"
$conexion); 
        list(
$total) = mysql_fetch_row($result);
        
$tampag 8;
        
$reg1 = ($pag-1) * $tampag;
            
$result mysql_query("SELECT * FROM articulos, hombre_mujer, 
tipo_articulo WHERE articulos.id_hm = hombre_mujer.id_hm AND 
articulos.id_tipoart = tipo_articulo.id_tipoart AND articulos.id_hm = $hm AND 
articulos.id_tipoart = $tipoart LIMIT $reg1, $tampag"
$conexion);

        if (
mysql_num_rows($result)){ 

        
// Muestro los registros
              
while ($fila = @mysql_fetch_array($result))
                  { 
echo 
$fila.... muestro los registros;
...
...
}
            
//libero el recordset
            
mysql_free_result($result);
    }
        
// Cierro la conexion
        
mysql_close($conexion); 



/******************************************************/
/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
function paginar($actual$total$por_pagina$enlace) {
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior\">&laquo; ANTERIOR</a> ";
  else
    
$texto "<b>&laquo; ANTERIOR</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior\">SIGUIENTE &raquo;</a>";
  else
    
$texto .= "<b>SIGUIENTE &raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"articulos.php?pag="); 
Bien... el paginador funciona de maravillas SOLO si en los SELECT, donde aparecen las variables articulos.id_hm = $hm y articulos.id_tipoart = $tipoart las reemplazo, por ejemplo con un nro, por ejemplo 1 ó 2, etc... o sea que queden de esta forma:
articulos.id_hm = 1 AND articulos.id_tipoart = 1

Si les dejo las variables como está expuesto al principio, me tira error:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource on line 68

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource on line 73

Alguna sugerencia porfassss? Mil gracias a todos.

Saludos. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 26/06/2008, 17:08
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Respuesta: Error en paginador - No carga la siguiente página

y de que parte recibe los valores por GET????
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 27/06/2008, 05:18
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Vienen linkeados de un menú... ejemplo:

BOTAS (articulos.php?hm=1&tipoart=1)
ZAPATOS (articulos.php?hm=1&tipoart=2)
ZAPATILLAS (articulos.php?hm=1&tipoart=3)
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 27/06/2008, 09:38
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Alguna sugerencia, porfa?
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #5 (permalink)  
Antiguo 27/06/2008, 09:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error en paginador - No carga la siguiente página

¿Estas seguro que al cambiar de pagina esas variables siguen estando por GET? Lo puedes ver fácilmente mirando la URL que se genera al cambiar de paginas.

Saludos.
  #6 (permalink)  
Antiguo 27/06/2008, 10:03
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

GatorV: Mmmm... creo que esas variables no aparecen. Debe de estar ahí el problema. Por eso funciona solo si uso directamente cualquier nro en el SELECT.

Te paso la web... el paginado está en los links BOTAS y FORMAL
http://www.axioncreativa.com.ar/lorensweb/index.php

Si directamente hago un SELECT a la tabla de ARTICULOS sin usar variables, tambien funciona perfecto, pero esa no es la idea. La idea es que el paginado funcione sobre los artículos que se seleccionan.

¿Podrías echarle una mirada, porfa?

Gracias maestro.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 27/06/2008, 10:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error en paginador - No carga la siguiente página

En efecto falta que propagues tus variables en el paginador, todo script de paginar debe de propagar las variables que vengan con GET, revisa tu código y agrega en la parte que genera los links para las siguientes paginas que también se propaguen las dos variables que necesitas.

Saludos.
  #8 (permalink)  
Antiguo 07/07/2008, 11:02
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Hola gente! Mil disculpas pero no logro pasarle las variables como me dice GatorV. La página 2 no me las toma.
Alguna sugerencia? Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #9 (permalink)  
Antiguo 07/07/2008, 14:48
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Gente... no le encuentro la vuelta, y me sigue trayendo todo lo que tengo en la tabla.
Tengo estas 2 variables donde me trae los productos correspondientes a esos códigos pero no logro hacer que el paginado me funcione.

Código PHP:
  $hm $_GET['hm']; --------------- este código es 1
  $tipoart 
$_GET['tipoart'];    ----- este código es 1

/******************************************************/
/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
function paginar($actual$total$por_pagina$enlace) {
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior\">&laquo; ANTERIOR</a> ";
  else
    
$texto "<b>&laquo; ANTERIOR</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior\">SIGUIENTE &raquo;</a>";
  else
    
$texto .= "<b>SIGUIENTE &raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"articulos.php?pag="); 
Con esas 2 variables depuro la selección de la tabla de articulos, pero no se donde irian.

Gracias por su ayuda.
Saludos. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #10 (permalink)  
Antiguo 07/07/2008, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error en paginador - No carga la siguiente página

Hola marx-pola,

Como te comente en un inicio tu problema es que debes de pasar las variables por GET, en este caso debes de modificar tu función paginar() para que te agregue las dos variables de GET necesarias.

Saludos.
  #11 (permalink)  
Antiguo 08/07/2008, 09:14
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Hola GatorV... hola gente.... bueno, realmente estuve probando la manera de pasar las variables y los hice de una manera q no sé si es la correcta, pero me pasó una cosa muy rara... offline, o sea, en localhost funciona PERFECTO pero anoche subí la página al server y cuando lo probé online, no funcionó... me muestra los primeros 8 y cuando le doy a SIGUIENTE, no hace nada y mantiene los mismos 8 resultados. ¿Por que puede ser? Les dejo lo que hice:

Código PHP:
function paginar($actual$total$por_pagina$enlace) {
  
$hm "&hm=".$_GET['hm'];
  
$tipoart "&tipoart=".$_GET['tipoart'];
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;

  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior$hm$tipoart\" >&laquo; ANTERIOR</a> ";
  else
    
$texto "<b>&laquo; ANTERIOR</b> ";

  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i$hm$tipoart\" >$i</a> ";
  
$texto .= "<b>$actual</b> ";

  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i$hm$tipoart\" >$i</a> ";

  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior$hm$tipoart\" >SIGUIENTE &raquo;</a>";
  else
    
$texto .= "<b>SIGUIENTE &raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"articulos.php?pag="); 
Muchas gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 08/07/2008 a las 10:09
  #12 (permalink)  
Antiguo 08/07/2008, 11:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error en paginador - No carga la siguiente página

Hola marx-pola,

¿Una vez arriba en el servidor ves si la URL cambia al pulsar en los enlaces del paginador?

Saludos.
  #13 (permalink)  
Antiguo 08/07/2008, 11:23
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Hola GatorV. La url no cambia porque está dentro de un frame. El cursor me muestra lo que sería la página 2, pero no pasan a los siguientes datos. Te muestro el link:

http://www.axioncreativa.com.ar/lorensweb/index.php

Selecciona la opcion BOTAS. Es muy raro... offline funciona perfecto.

Gracias.

PD: Las variables de la funcion las traje desde la consulta que hice mucho antes del paginado y lo hice así:

if (!isset($pag)) $pag = 1; // Por defecto, pagina 1

$result = mysql_query("SELECT COUNT(*) FROM articulos......

list($total) = mysql_fetch_row($result);
$tampag = 8;
$reg1 = ($pag-1) * $tampag;
.......
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #14 (permalink)  
Antiguo 08/07/2008, 11:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error en paginador - No carga la siguiente página

mmmm, pero de donde obtienes $pag?, necesitas descargarlo usando $pag = $_GET['pag'].

Saludos.
  #15 (permalink)  
Antiguo 08/07/2008, 11:58
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Error en paginador - No carga la siguiente página

Listo GatorV. Era justamente eso lo que me faltaba y tenía que declararse arriba de lo último que mostré. De esta forma, quedaría así:

Código PHP:
$pag $_GET['pag'];        
if (!isset(
$pag)) $pag 1// Por defecto, pagina 1
$result mysql_query("SELECT COUNT(*) FROM articulos...
...

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

/* Funcion paginar

function paginar($actual, $total, $por_pagina, $enlace) {
  $hm = "
&hm=". $_GET['hm'];
  $tipoart = "
&tipoart=". $_GET['tipoart'];
  $pag = $_GET['pag'];

  $total_paginas = ceil($total/$por_pagina);
  $anterior = $actual - 1;
  $posterior = $actual + 1;
  if ($actual>1)
    $texto = "
<a href="$enlace$anterior$hm$tipoart\" class='calibri-14pxMarron'>&laquo; ANTERIOR</a> ";
  else
    
$texto "<b>&laquo; ANTERIOR</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i$hm$tipoart\" class='calibri-14pxMarron'>$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i$hm$tipoart\" class='calibri-14pxMarron'>$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior$hm$tipoart\" class='calibri-14pxMarron'>SIGUIENTE &raquo;</a>";
  else
    
$texto .= "<b>SIGUIENTE &raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"articulos.php?pag="); 
al comienzo de la funcion paginar, le agregué las variables que me faltaban para ejecutar el script. De esta forma, me trae determinados artículos de la base de datos y no todo.

Millones de Gracias por tu orientación.

Un cordial saludo. 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 23:54.