Foros del Web » Programando para Internet » PHP »

Problema al Paginar Resultados

Estas en el tema de Problema al Paginar Resultados en el foro de PHP en Foros del Web. Buenas, tengo un pequeño sistema de noticias el cual estoy intentando paginarlo, consta de una pagina principal donde se muestran todas las nocicias indistintamente y ...
  #1 (permalink)  
Antiguo 12/09/2011, 06:17
 
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años
Puntos: 0
Problema al Paginar Resultados

Buenas, tengo un pequeño sistema de noticias el cual estoy intentando paginarlo, consta de una pagina principal donde se muestran todas las nocicias indistintamente y otra en la cual se ven separadas por categorias,
y aca es donde esta el problema escencialmente, en la pagina principal la paginacion funciona perfecto, basicamente se envia a la url una variable $pagina y dependiendo el valor de esta muestra los resultados de las noticias de a 10 por ejemplo.

El problema es que para separar las noticias por categorias tambien dependo de lo que se muestre en la url, ya que ligo un campo de la tabla de noticias con un campo de la tabla de catagorias y asi enviando a la url una variable con el valor del campo que liga la categoria con la noticias me permite en otra pagina seleccionar y mostrar solo las noticias que empatan con ese campo.

Les dejo lo que decia de las urls y codigo asi se va a entender mejor.

Suponiendo que la url de la pagina principal fuera esta:


Cita:
www.blablabla.com
Alli se muestran los resultados de las noticias del 1 al 10 y debajo la paginacion para avanzar a la siguiente pagina en la cual se muestran los resultados de la noticia 11 a la 20 y asi sucesivamente.

url de la pagina 2, en la que se muestran las noticias de la 11 a la 20:


Cita:
www.blablabla.com?pagina=2
Y aqui el problema ya que la url para mostrar las noticias de alguna categoria en especifico seria esta:

Cita:
www.blablabla.com/categorias.php?Cat=1
Por lo que al mantener esa forma si quiero pasar a la pagina 2 la url quedaria:

Cita:
www.blablabla.com/categorias.php?pagina=2
Por lo que al no mostrar el valor de la variable ?Cat en la url ya no puedo motrar los resultados de la consulta.



No se me ocurre como puedo adaptarlo para que se mantenga el valor de ?Cat y aparesca el de
?pagina para poder paginar los resultados.




Dejo los codigos por si me explique mal y por si encuentran solucion para mi problema.

index.php (esta es la que obviamente no tiene problemas)
Código PHP:
include('db-cnx.php'); 
?> 
<div style="float:left; width: 25%;"> 
<h1>Noticias</h1><br/><br/> 
<?php  
//Limito la busqueda  
$TAMANO_PAGINA 2;  

//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;  


//miro a ver el número total de campos que hay en la tabla con esa búsqueda  
$ssql "select * from noticias";  
$rs mysql_query($ssql);  
$num_total_registros mysql_num_rows($rs);  
[/
b]//calculo el total de páginas  
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);  

//construyo la sentencia SQL  
$ssql "select * from noticias limit " $inicio "," $TAMANO_PAGINA;  
$rs mysql_query($ssql);  
while(
$f=mysql_fetch_array($rs)){ 
echo 
'<tr>'.$f['fecha'].'</td><br />'
echo 
'<tr>'.$f['titulo'].'</td><br />'
echo 
nl2br (substr(($f['noticia']),0,150)) . "...";  
echo 
'<tr><a href="noticia.php?id='.$f['id'].'">[Ver noticia completa]</a><br /><br /><br />';  

//cerramos el conjunto de resultado y la conexión con la base de datos  
mysql_free_result($rs);  

//muestro los distintos índices de las páginas, si es que hay varias páginas  
if ($pagina==1) { 
     
  echo 
"<strong>".$pagina."</strong>"
   
  } 
if (
$pagina!= 1) { 
  echo 
'<a href="?pagina=1">1</a>'
  echo 
"..."
  echo 
'<a href="?pagina=' . ($pagina 1) . '">' . ($pagina 1) . '</a>'
  echo 
"<strong>".$pagina."</strong>"
  } 
if (
$pagina!= $total_paginas) { 
   
  echo
'<a href="?pagina=' . ($pagina 1) . '">' . ($pagina 1) . '</a>'
  echo 
"..."
  echo 
"<a href='?pagina=$total_paginas'>".$total_paginas."</a>"
  } 
?> 
</div> 
<div style="float:right; width: 75%;"> 
<h1>Categorias</h1><br/><br/> 
<?php 
$sqlQueryCat 
mysql_query("SELECT * FROM categorias"$db_link
or die(
mysql_error()); 
echo 
"<ul>"
while(
$rowCat mysql_fetch_array($sqlQueryCat)){ 
echo 
"<li><a href='categorias.php?Cat=$rowCat[cat_id]'>$rowCat[categoria]</a></li>"

echo 
"</ul>";
Y aca el de la pagina que muestra las noticias segun la categoria que se selecciono:

categorias.php
Código PHP:
include('db-cnx.php'); 
//Limito la busqueda  
$TAMANO_PAGINA 1;  

//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;  


//miro a ver el número total de campos que hay en la tabla con esa búsqueda  
$ssql 'select * from noticias where notCat_id ="'.$_GET['Cat'].'" ';  
$rs mysql_query($ssql);  
$num_total_registros mysql_num_rows($rs);  
//calculo el total de páginas  
$total_paginas ceil($num_total_registros $TAMANO_PAGINA); 

//construyo la sentencia SQL  
$ssql "SELECT * FROM noticias WHERE notCat_id ='$_GET[Cat]' LIMIT $inicio, $TAMANO_PAGINA"
$rs mysql_query($ssql) or die(mysql_error());  
while(
$f=mysql_fetch_array($rs)){ 
echo 
'<tr>'.$f['fecha'].'</td><br />'
echo 
'<tr>'.$f['titulo'].'</td><br />'
echo 
nl2br (substr(($f['noticia']),0,150)) . "...";  
echo 
'<tr><a href="noticia.php?id='.$f['id'].'">[Ver noticia completa]</a><br /><br /><br />';  


//muestro los distintos índices de las páginas, si es que hay varias páginas  
if ($pagina==1) { 
     
  echo 
"<strong>".$pagina."</strong>"
   
  } 
if (
$pagina!= 1) { 
  echo 
'<a href="?pagina=1">1</a>'
  echo 
"..."
  echo 
'<a href="pagina=' . ($pagina 1) . '">' . ($pagina 1) . '</a>'
  echo 
"<strong>".$pagina."</strong>"
  } 
if (
$pagina!= $total_paginas) { 
   
  echo
'<a href="?pagina=' . ($pagina 1) . '">' . ($pagina 1) . '</a>'
  echo 
"..."
  echo 
'<a href="categorias.php?pagina=' .$total_paginas.'">' .$total_paginas.'</a>'
  } 
Bueno eso, si necesitan algun dato mas pidanlo nomas a ver si asi se logra solucionar.

Gracias desde ya :D:D:D
  #2 (permalink)  
Antiguo 12/09/2011, 06:32
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: Problema al Paginar Resultados

para enviar mas de una variable por url, concatenas con "&".

ejemplo:

Código:
www.blablabla.com/categorias.php?Cat=1&pagina=2
salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #3 (permalink)  
Antiguo 12/09/2011, 17:55
 
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema al Paginar Resultados

Alli esta el problema, como hacer para que el valor de ?Cat sea el de la categoria que estoy mostrando en el momento, si dejo por ejemplo ?Cat=1 por mas que este en otra categoria al avanzar de pagina volveria a la Categoria 1.

Como hacer para Tomar el Valor de ?Cat y asi poder concatenarlo con el de pagina.
  #4 (permalink)  
Antiguo 12/09/2011, 19:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al Paginar Resultados

Usas $_GET['Cat'] así puedes leer el valor actual.

Saludos.
  #5 (permalink)  
Antiguo 12/09/2011, 19:30
 
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema al Paginar Resultados

Probe de esa manera GatorV

pero a pesar que mantiene el valor de ?Cat por lo que se mantiene la categoria, la variable $pagina no toma el valor de ?pagina por lo que por mas que tenga esta url:

Cita:
www.blablabla.com/categorias.php?Cat=1&?pagina=5
No se muestran los resultados de la pagina 5 que serian del 41 al 50 sino que muestra los resultados de 0 a 10 lo cual se da cuando la variable $pagina no recibe ningun valor.

Dejo el codigo con esa edicion:

Código PHP:
include('db-cnx.php');  
//Limito la busqueda   
$TAMANO_PAGINA 1;   

//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;   
}  

//miro a ver el número total de campos que hay en la tabla con esa búsqueda   
$ssql 'select * from noticias where notCat_id ="'.$_GET['Cat'].'" ';   
$rs mysql_query($ssql);   
$num_total_registros mysql_num_rows($rs);   
//calculo el total de páginas   
$total_paginas ceil($num_total_registros $TAMANO_PAGINA);  

//construyo la sentencia SQL   
$ssql "SELECT * FROM noticias WHERE notCat_id ='$_GET[Cat]' LIMIT $inicio, $TAMANO_PAGINA";  
$rs mysql_query($ssql) or die(mysql_error());   
while(
$f=mysql_fetch_array($rs)){  
echo 
'<tr>'.$f['fecha'].'</td><br />';  
echo 
'<tr>'.$f['titulo'].'</td><br />';  
echo 
nl2br (substr(($f['noticia']),0,150)) . "...";   
echo 
'<tr><a href="noticia.php?id='.$f['id'].'">[Ver noticia completa]</a><br /><br /><br />';   
}  

//muestro los distintos índices de las páginas, si es que hay varias páginas 

if ($pagina==1) {
    echo 
"<strong>".$pagina."</strong>";
  
  }
if (
$pagina!= 1) {
  echo 
'<a href="?Cat='.$_GET['Cat'].'&?pagina=1">1</a>';
  echo 
"...";
  echo 
'<a href="?Cat='.$_GET['Cat'].'&?pagina=' . ($pagina 1) . '">' . ($pagina 1) . '</a>';
  echo 
"<strong>".$pagina."</strong>";
  }
if (
$pagina!= $total_paginas) {
  
  echo
'<a href="?Cat='.$_GET['Cat'].'&?pagina=' . ($pagina 1) . '">' . ($pagina 1) . '</a>';
  echo 
"...";
  echo 
'<a href="?Cat='.$_GET['Cat'].'&?pagina=' .$total_paginas.'">' .$total_paginas.'</a>';
  } 
  #6 (permalink)  
Antiguo 12/09/2011, 19:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al Paginar Resultados

Ya te dijieron, no debes de usar ? debes de usar &, te invito a que leas la estructura del protocolo HTTP, las variables van separadas con & y con ? indicas que empieza lo que se conoce el Query String.

Es decir:

http://algo.com?pag=1&?cat=1 esta mal, la forma correcta es solo con &:

http://algo.com?pag=1&cat=1&foo=bar&baz=bat

Saludos.
  #7 (permalink)  
Antiguo 12/09/2011, 21:03
 
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema al Paginar Resultados

Exacto, no me estaba dando cuenta que mantenia el ?

Gracias Perro y GatorV Funciona perfecto.

Etiquetas: mysql, paginar, registro, resultados, sql, tabla, 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 00:34.