Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2011, 06:17
Sabin
 
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 1 mes
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