Autor Tema: [CLASE] Paginador.  (Leído 1397 veces)

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
[CLASE] Paginador.
« en: 10 de Julio de 2010, 04:28:11 am »
Citar
<?
class paginar {
    private 
$text;
    private 
$configure = &#39;1-2&#39;; # 0 = Parrafos 1 = Oraciones 1-X = X numeros de oraciones  1-X = X numeros de parrafos
    
private $error;
    private 
$actually;
    private 
$separator;
    public function 
__construct($text) {
        
$this->text htmlentities($text);
        
$this->actually = (isset($_GET[&#39;page&#39;]) ? (is_numeric($_GET[&#39;page&#39;]) ? stripslashes($_GET[&#39;page&#39;]) : &#39;0&#39;) : &#39;0&#39;);
        
$this->separator = (reset(explode(&#39;-&#39;, $this->configure)) == 1 ? &#39;.&#39; : (next(explode(&#39;-&#39;, $this->configure)) == 0 ? &#39;
&#39; : NULL));
    
}
    public function 
paginarTexto() {
        if (
strlen($this->text) < 20) {
            echo 
$this->error 20035;
        } else {
            if (!
preg_match("/^[\d]{1}-[\d]{1}/i"$this->configure)) {
                echo 
$this->error 45081;
            } else {
                
$numeros explode(&#39;-&#39;, $this->configure);
                
$paginar explode($this->separator$this->text);
                for (
$i $this->actually;$i $this->actually $numeros[1];$i++) {
                    echo 
$paginar[$i] . $this->separator;
                }
            }
        }
    }
    public function 
showPages() {
        
$numeros explode(&#39;-&#39;, $this->configure);
        
for ($i 0;$i count(explode($this->separator$this->text)) / $numeros[1];$i++) {
            echo &
#39;<a href="&#39;.$_SERVER[&#39;PHP_SELF&#39;].&#39;?page=&#39; . $i . &#39;">&#39; . ($_GET[&#39;page&#39;] == $i ? &#39;<strong>[&#39; . $i . &#39;]</strong>&#39; : &#39;[&#39; . $i . &#39;]&#39;) . &#39;</a> &#39;;
        
}
    }
    public function 
showError($int) { # 0 = Mostrar numero de error, 1 = Mostrar el error
        
if (!is_numeric($int)) {
            
$this->error 45647;
        } else {
            if (
$int == 0) {
                switch (
$this->error) {
                    case 
20035:
                        echo &
#39;El texto no puede ser menor a los 20 caracteres&#39;;
                    
break;
                    case 
45081:
                        echo &
#39;La configuracion del paginador debe cumplir con el patron asignado&#39;;
                    
break;
                    case 
45647:
                        echo &
#39;El nivel de error debe ser especificado con los parametros permitidos.&#39;;
                    
break;
                }
            } elseif (
$int == 1) {
                switch (
$this->error) {
                    case 
20035:
                        echo 
20035;
                    break;
                    case 
45081:
                        echo 
45081;
                    break;
                    case 
45647:
                        echo 
45647;
                    break;
                }
            }
        }
    }
}
« Última modificación: 07 de Enero de 2011, 19:57:38 pm por Focux »
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Comunidad PHPeros

[CLASE] Paginador.
« en: 10 de Julio de 2010, 04:28:11 am »

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[CLASE] Paginador.
« Respuesta #1 en: 10 de Julio de 2010, 09:51:52 am »
Me gusta, yo hice una parecida en donde se puede especificar cómo serán las urls, también donde se especifica el orden de las noticias a mostrar, la cantidad, la tabla de donde se van a mostrar, etcétera...

Citar
<?php
class Paginador
{
	
/* Variables de paginador */
	
private 
$url;
	
private 
$pagina;
	
private 
$totalPaginas;
	

	
/* Variables de MySQL */
	
private 
$consulta;
	
private 
$inicio;
	

	
/* Establecer parámetros de la case */
	
function 
__construct($xCantidad$xTabla$xOrden$xUrl)
	
{
	
	
$this->url $xUrl;
	
	
$this->pagina $_GET[&#39;pagina&#39;];
	
	

	
	
if(!
$this->pagina)
	
	
{
	
	
	
$this->inicio 0;
	
	
	
$this->pagina 1;
	
	
}
	
	
else
	
	
{
	
	
	
$this->inicio = ($this->pagina 1) * $xCantidad;
	
	
}
	
	

	
	
$total mysql_num_rows(mysql_query("SELECT * FROM ".$xTabla.""));
	
	
$this->totalPaginas ceil($total $xCantidad);
	
	

	
	
$this->consulta mysql_query("SELECT * FROM ".$xTabla." ORDER BY id ".$xOrden." LIMIT ".$this->inicio.",".$xCantidad."");
	
}
	

	
/* Función para devolver el mysql_num_rows() */
	
function 
rows()
	
{
	
	
return 
mysql_num_rows($this->consulta);
	
}
	

	
/* Función para devolver el mysql_fetch_array() */
	
function 
fetch()
	
{
	
	
return 
mysql_fetch_array($this->consulta);
	
}
	

	
/* Función para la URL */
	
private function 
url($replace)
	
{
	
	
return 
str_replace("$1",$replace,$this->url);
	
}
	

	
/* Función para mostrar el paginador */
	
function 
mostrarPaginador()
	
{
	
	
if(
$this->totalPaginas 1)
	
	
{
	
	
	
$siguiente $this->pagina 1;
	
	
	
$anterior $this->pagina 1;
	
	
	

	
	
	
if(
$this->pagina != 1)
	
	
	
{
	
	
	
	
echo 
$this->url($anterior)."&laquo;</a> ";
	
	
	
}
	
	
	

	
	
	
for(
$i 1$i <= $this->totalPaginas$i++)
	
	
	
{
	
	
	
	
if(
$this->pagina == $i)
	
	
	
	
{
	
	
	
	
	
echo 
"<span style=&#39;font-size:14px; font-weight:bold&#39;>".$this->pagina."</span> ";
	
	
	
	
}
	
	
	
	
else
	
	
	
	
{
	
	
	
	
	
echo 
$this->url($i).$i."</a> ";
	
	
	
	
}
	
	
	
}
	
	
	

	
	
	
if(
$this->pagina != $this->totalPaginas)
	
	
	
{
	
	
	
	
echo
$this->url($siguiente)."&raquo;</a>";
	
	
	
}
	
	
}
	
}
}
?>

Así me ahorro la consulta a la base de datos y cuando quiero mostrar por ejemplo el sistema de noticias, lo llamo de la siguiente manera:

<?php
$noticias 
= new Paginador(5"noticias""DESC""<a href=&#39;/pagina-$1&#39;>");
if(
$noticias->rows())
{
        while(
$row $noticias->fetch())
        {
                
// Muestro las noticias
        
}
}
?>


Creo que eso es todo, cualquier comentario o duda me dicen :)
Saludos ^^
- Moderador de PHP


Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Paginador.
« Respuesta #2 en: 10 de Julio de 2010, 16:47:17 pm »
Lo mio es un paginador de texto no de datos mySQL. Recuerden que pueden especificar si lo quieren paginar en parrafos o oraciones & tambien cuantas oraciones o parrafos mostrar por página.
« Última modificación: 11 de Julio de 2010, 13:58:08 pm por Focux »
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado hansphp

  • PHPerit@
  • *
  • Mensajes: 7
  • Karma: 2
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
Re:[CLASE] Paginador.
« Respuesta #3 en: 22 de Julio de 2010, 05:53:05 am »
Osea, nada que ver ok?.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Paginador.
« Respuesta #4 en: 22 de Julio de 2010, 16:38:55 pm »
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[CLASE] Paginador.
« Respuesta #5 en: 07 de Enero de 2011, 00:33:05 am »

Espero que no sea demasiado tarde para responder pero muchas gracias Focux ;) Un karmazo de mi parte :P

#Fdo. Physlet

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Paginador.
« Respuesta #6 en: 07 de Enero de 2011, 19:03:33 pm »
Muchas gracias a ti por tu karma ♥ :D
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>