Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2012, 00:12
xxripperxx
 
Fecha de Ingreso: noviembre-2012
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Paginacion de resultados en PHP

Estoy intentando paginar los resultados de un foro pero al parecer estopy haciendo algo mal, les adjunto mi codigo
ojalá alguien me heche un cable con esto ._.

foro.php
Código HTML:
<html>

<table border="1" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<? 
$sql = "SELECT * FROM foro WHERE foro = '".$foro."' ORDER BY id DESC LIMIT 5";
$res=mysql_query($sql,$db);
while ($row=mysql_fetch_array($res)){
$rows = 1;
?><tr>
    <td width="82%" colspan="2"><font face="Verdana" size="2"><b><? echo $row["autor"]; ?></b><br />
    <? echo htmlentities($row["mensaje"]); ?><br />
    </font><b><font face="Verdana" size="2">
    <a href="?foro=<? echo $row["id"]; ?>"><?
    echo mysql_result(mysql_query("SELECT COUNT(id) FROM foro WHERE foro = '".$row["id"]."'",$db));
?> [Leer mas]</a></font></b></td>
  </tr><?
}
if($rows == ''){ ?><tr>
    <td width="82%" colspan="2"><font face="Verdana" size="2">No hay mensajes en este foro</font></td>
  </tr><?
}
?><tr>
    <td width="82%" colspan="2"><font face="Verdana" size="2"><b><a href="?escribir=<?
echo $foro;
?>">Escribir mensaje</a><?
$arriba = @mysql_result(mysql_query("SELECT foro FROM foro WHERE id = '".$foro."'",$db));
if($arriba != '')echo ' | <a href="?foro='.$arriba.'">Volver</a>';
else echo ' | <a href="?foro=">Volver</a>';
?></font></b></td>
  </tr>
</table> 

<?

require_once('paginator.class.php');
$pages= new Paginator;
$pages->items_total = "SELECT COUNT(*) FROM foro WHERE foro='0'"; // cambiamos X por el total
$pages->mid_range = 7;
$pages->paginate();
echo $pages->display_pages();

?>

</html> 
paginator.class.php
Código PHP:
Ver original
  1. <?php
  2. /*
  3.  * PHP Pagination Class
  4.  * @author [email protected] - http://www.catchmyfame.com
  5.  * @version 2.0.0
  6.  * @date October 18, 2011
  7.  * @copyright (c) [email protected] (www.catchmyfame.com)
  8.  * @license CC Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) - http://creativecommons.org/licenses/by-sa/3.0/
  9.  */
  10. class Paginator{
  11.     var $items_per_page;
  12.     var $items_total;
  13.     var $current_page;
  14.     var $num_pages;
  15.     var $mid_range;
  16.     var $low;
  17.     var $limit;
  18.     var $return;
  19.     var $default_ipp;
  20.     var $querystring;
  21.     var $ipp_array;
  22.  
  23.     function Paginator()
  24.     {
  25.         $this->current_page = 1;
  26.         $this->mid_range = 7;
  27.         $this->ipp_array = array(10,25,50,100,'All');
  28.         $this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp;
  29.     }
  30.  
  31.     function paginate()
  32.     {
  33.         if(!isset($this->default_ipp)) $this->default_ipp=25;
  34.         if($_GET['ipp'] == 'All')
  35.         {
  36.             $this->num_pages = 1;
  37. //          $this->items_per_page = $this->default_ipp;
  38.         }
  39.         else
  40.         {
  41.             if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp;
  42.             $this->num_pages = ceil($this->items_total/$this->items_per_page);
  43.         }
  44.         $this->current_page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1 ; // must be numeric > 0
  45.         $prev_page = $this->current_page-1;
  46.         $next_page = $this->current_page+1;
  47.         if($_GET)
  48.         {
  49.             $args = explode("&",$_SERVER['QUERY_STRING']);
  50.             foreach($args as $arg)
  51.             {
  52.                 $keyval = explode("=",$arg);
  53.                 if($keyval[0] != "page" And $keyval[0] != "ipp") $this->querystring .= "&" . $arg;
  54.             }
  55.         }
  56.  
  57.         if($_POST)
  58.         {
  59.             foreach($_POST as $key=>$val)
  60.             {
  61.                 if($key != "page" And $key != "ipp") $this->querystring .= "&$key=$val";
  62.             }
  63.         }
  64.         if($this->num_pages > 10)
  65.         {
  66.             $this->return = ($this->current_page > 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">&laquo; Previous</a> ":"<span class=\"inactive\" href=\"#\">&laquo; Previous</span> ";
  67.  
  68.             $this->start_range = $this->current_page - floor($this->mid_range/2);
  69.             $this->end_range = $this->current_page + floor($this->mid_range/2);
  70.  
  71.             if($this->start_range <= 0)
  72.             {
  73.                 $this->end_range += abs($this->start_range)+1;
  74.                 $this->start_range = 1;
  75.             }
  76.             if($this->end_range > $this->num_pages)
  77.             {
  78.                 $this->start_range -= $this->end_range-$this->num_pages;
  79.                 $this->end_range = $this->num_pages;
  80.             }
  81.             $this->range = range($this->start_range,$this->end_range);
  82.  
  83.             for($i=1;$i<=$this->num_pages;$i++)
  84.             {
  85.                 if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... ";
  86.                 // loop through all pages. if first, last, or in range, display
  87.                 if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
  88.                 {
  89.                     $this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
  90.                 }
  91.                 if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
  92.             }
  93.             $this->return .= (($this->current_page < $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All') And $this->current_page > 0) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next &raquo;</a>\n":"<span class=\"inactive\" href=\"#\">&raquo; Next</span>\n";
  94.             $this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
  95.         }
  96.         else
  97.         {
  98.             for($i=1;$i<=$this->num_pages;$i++)
  99.             {
  100.                 $this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
  101.             }
  102.             $this->return .= "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
  103.         }
  104.         $this->low = ($this->current_page <= 0) ? 0:($this->current_page-1) * $this->items_per_page;
  105.         if($this->current_page <= 0) $this->items_per_page = 0;
  106.         $this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
  107.     }
  108.     function display_items_per_page()
  109.     {
  110.         $items = '';
  111.         if(!isset($_GET[ipp])) $this->items_per_page = $this->default_ipp;
  112.         foreach($this->ipp_array as $ipp_opt) $items .= ($ipp_opt == $this->items_per_page) ? "<option selected value=\"$ipp_opt\">$ipp_opt</option>\n":"<option value=\"$ipp_opt\">$ipp_opt</option>\n";
  113.         return "<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n";
  114.     }
  115.     function display_jump_menu()
  116.     {
  117.         for($i=1;$i<=$this->num_pages;$i++)
  118.         {
  119.             $option .= ($i==$this->current_page) ? "<option value=\"$i\" selected>$i</option>\n":"<option value=\"$i\">$i</option>\n";
  120.         }
  121.         return "<span class=\"paginate\">Page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page$this->querystring';return false\">$option</select>\n";
  122.     }
  123.     function display_pages()
  124.     {
  125.         return $this->return;
  126.     }
  127. }