Comunidad PHPeros
Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Focux en 10 de Julio de 2010, 04:28:11 am
-
<?
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;
}
}
}
}
}
-
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...
<?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)."«</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)."»</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 ^^
-
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.
-
Osea, nada que ver ok?.
-
Osea, nada que ver ok?.
Si, xdd.
-
Espero que no sea demasiado tarde para responder pero muchas gracias Focux ;) Un karmazo de mi parte :P
-
Muchas gracias a ti por tu karma ♥ :D