Comunidad PHPeros

Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Focux en 10 de Julio de 2010, 04:28:11 am

Título: [CLASE] Paginador.
Publicado por: Focux en 10 de Julio de 2010, 04:28:11 am
Citar
<?
class paginar {
    private $text;
    private $configure = '1-2'; # 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['page']) ? (is_numeric($_GET['page']) ? stripslashes($_GET['page']) : '0') : '0');
        $this->separator = (reset(explode('-', $this->configure)) == 1 ? '.' : (next(explode('-', $this->configure)) == 0 ? '
' : 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('-', $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('-', $this->configure);
        for ($i = 0;$i < count(explode($this->separator, $this->text)) / $numeros[1];$i++) {
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page=' . $i . '">' . ($_GET['page'] == $i ? '<strong>[' . $i . ']</strong>' : '[' . $i . ']') . '</a> ';
        }
    }
    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 'El texto no puede ser menor a los 20 caracteres';
                    break;
                    case 45081:
                        echo 'La configuracion del paginador debe cumplir con el patron asignado';
                    break;
                    case 45647:
                        echo 'El nivel de error debe ser especificado con los parametros permitidos.';
                    break;
                }
            } elseif ($int == 1) {
                switch ($this->error) {
                    case 20035:
                        echo 20035;
                    break;
                    case 45081:
                        echo 45081;
                    break;
                    case 45647:
                        echo 45647;
                    break;
                }
            }
        }
    }
}
Título: Re:[CLASE] Paginador.
Publicado por: Warlox 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['pagina'];

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='font-size:14px; font-weight:bold'>".$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='/pagina-$1'>");
if($noticias->rows())
{
        while($row = $noticias->fetch())
        {
                // Muestro las noticias
        }
}
?>

Creo que eso es todo, cualquier comentario o duda me dicen :)
Saludos ^^
Título: Re:[CLASE] Paginador.
Publicado por: Focux 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.
Título: Re:[CLASE] Paginador.
Publicado por: hansphp en 22 de Julio de 2010, 05:53:05 am
Osea, nada que ver ok?.
Título: Re:[CLASE] Paginador.
Publicado por: Focux en 22 de Julio de 2010, 16:38:55 pm
Osea, nada que ver ok?.
Si, xdd.
Título: Re:[CLASE] Paginador.
Publicado por: Siquillote 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
Título: Re:[CLASE] Paginador.
Publicado por: Focux en 07 de Enero de 2011, 19:03:33 pm
Muchas gracias a ti por tu karma ♥ :D