Foros del Web » Programando para Internet » PHP »

Paginador repite resultados en las otras páginas

Estas en el tema de Paginador repite resultados en las otras páginas en el foro de PHP en Foros del Web. Hola a todos! Tengo una duda... tengo esta consulta con este paginador. No me tira nungún error, devuelve lo que reciben las variables pero el ...
  #1 (permalink)  
Antiguo 23/12/2011, 08:48
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Paginador repite resultados en las otras páginas

Hola a todos! Tengo una duda... tengo esta consulta con este paginador. No me tira nungún error, devuelve lo que reciben las variables pero el problema está al paginar. Aclaro que la BDD NO TIENE datos duplicados.

Si el resultado de la consulta me dice que hay 18 productos, en la primer página me muestra los primeros 16 productos, pero al pasar a la siguiente página, en vez de mostrarme los 2 restantes, me aparecen 8

Ejemplifico:
Pagina 1
prod 1 - prod 2 - prod 3 - prod 4
prod 5 - prod 6 - prod 7 - prod 8
prod 9 - prod 10 - prod 11 - prod 12
prod 13 - prod 14 - prod 15 - prod 16

Pagina 2
prod 11 - prod 12 - prod 13 - prod 14
prod 15 - prod 16 - prod 17 - prod 18

La página 2 devuelve desde el resultado nro 11 para adelante.

Les muestro el código:

Código PHP:
// realizar esta función si se apretó el botón de enviar en el formulario de busqueda
if(isset($_GET['searchart']))

$select1 $_GET['select1'];
{

$condiciones "";
if (
$select1 != ""$condiciones .= " AND categoria.id_categoria = $select1";

$res mysql_query("SELECT * FROM producto, categoria, linea, articulo WHERE producto.cod_categoria = categoria.cod_categoria AND producto.cod_linea = linea.cod_linea AND producto.cod_articulo = articulo.cod_articulo $condiciones GROUP BY producto.cod_articulo ORDER BY producto.cod_linea"); 

$numeroRegistros mysql_num_rows($res);

$tamPag=10;
$tamPag2=16;

//pagina actual si no esta definida y limites 
if(!isset($_GET["pagina"])) 

$pagina=1
$inicio=1
$final=$tamPag
}else{ 
$pagina $_GET["pagina"]; 

//calculo del limite inferior 
$limitInf=($pagina-1)*$tamPag

//calculo del numero de paginas 
$numPags=ceil($numeroRegistros/$tamPag); 
if(!isset(
$pagina)) 

$pagina=1
$inicio=1
$final=$tamPag
}else{ 
$seccionActual=intval(($pagina-1)/$tamPag); 
$inicio=($seccionActual*$tamPag)+1

if(
$pagina<$numPags

$final=$inicio+$tamPag-1
}else{ 
$final=$numPags


if (
$final>$numPags){ 
$final=$numPags



$res mysql_query("SELECT * FROM producto, categoria, linea, articulo WHERE producto.cod_categoria = categoria.cod_categoria AND producto.cod_linea = linea.cod_linea AND producto.cod_articulo = articulo.cod_articulo $condiciones GROUP BY producto.cod_articulo ORDER BY producto.cod_linea LIMIT ".$limitInf.", ".$tamPag2."); 

//muestro los resultados...

//Paginacion

if($pagina>1)
{
echo "
<class='txtPaginador11b' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&select1=".$select1."&searchart=buscar'>"; 
echo "
<class='txtPaginador11b'><< ANTERIOR</font>"; 
echo "
</a>*"; 


for($i=$inicio;$i<=$final;$i++) 

if($i==$pagina) 

echo "
<class='txtPaginador11b'><b>".$i." </b>"; 
}else{ 
echo "
<class='txtPaginador11b' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&select1=".$select1."&searchart=buscar'>"; 
echo "
<class='txtPaginador11b'>".$i."</a>*"; 


if($pagina<$numPags) 

echo "
*<class='txtPaginador11b' href='" .$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&select1=".$select1."&searchart=buscar'>"; 
echo "
<class='txtPaginador11b'>SIGUIENTE >></a>"; 

echo "
<div id='total_paginador'><font face='verdana' size='-2'>Total".$numeroRegistros." resultados</div>";

mysql_close($conexion); 
A la variable $tamPag le pude 10 para que me muestre en el paginador hasta la cantidad de 10 páginas y a la variable $tamPag2 le puse 16 para limitar la cantidad de resultados a mostrar por página.

¿Puede ser que ahí esté el problema?
¿Por qué devuelve resultados duplicados si la base no los tiene?
¿Por qué me dice por ej. que hay 100 resultados y me muestra 130?

Muchas gracias, saludos y felices fiestas para todos.
Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 23/12/2011, 09:13
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Paginador repite resultados en las otras páginas

Por que no usas esta clase para paginación php.

Lee la documentación, es fácil de usar, me cuentas como te va.

Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.
  #3 (permalink)  
Antiguo 27/12/2011, 09:52
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Paginador repite resultados en las otras páginas

Lo probé pero todavía no lo pude hacer funcionar. ¿Pero por qué no puedo hacer funcionar el que yo postee? ¿Está mal armado?
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 27/12/2011, 10:11
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Paginador repite resultados en las otras páginas

Ah! Acá estaba el error...

La variable $tamPag2=16; está de más. Se la saqué y ahora no repite los resultados. Pero tengo una duda... si tengo 200 resultados para mostrar, ¿cómo hago para que me aparezcan de 10 en 10 las páginas a mostrar? Al presionar Siguientes que me muestren las siguientes 20 páginas en el caso de existir. Actualmente me aparecen de la 1 a la 16 y quiero que aparezca de la 1 a la 10

La variable $tamPag= 16 me muestra 16 resultados por página. Si lo cambio a 10 me modifica la cantidad de resultados a mostrar y también la cantidad de páginas del paginador.

Quisiera que se vera así: Ejemplo:
1 2 3 4 5 6 7 8 9 10 Siguientes (presiono Siguientes y que aparezca....)

Anterior 11 12 13 14 15 16 17 18 19 20 Siguientes

¿Se puede hacer esto?

Muchas gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 27/12/2011 a las 10:17

Etiquetas: formulario, mysql, paginador, páginas, registro, repite, resultados, variables
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:32.