Foros del Web » Programando para Internet » PHP »

Arreglar Clase de Paginación

Estas en el tema de Arreglar Clase de Paginación en el foro de PHP en Foros del Web. Hola amigos, buscando por la web encontré una buena clase para paginar, creo que fue sacada de aquí, por lo que leí la realizo alguien ...
  #1 (permalink)  
Antiguo 08/04/2014, 11:08
 
Fecha de Ingreso: octubre-2013
Ubicación: Loreto, Zacatecas
Mensajes: 24
Antigüedad: 10 años, 5 meses
Puntos: 0
De acuerdo Arreglar Clase de Paginación

Hola amigos, buscando por la web encontré una buena clase para paginar, creo que fue sacada de aquí, por lo que leí la realizo alguien llamado Pinedo, el lugar de donde lo saque ya le había hecho algunas modificaciones, yo le hice también algunas, pero estoy teniendo otros problemas, y es que para que funcione tengo que utilizar mysql y mysqli, es aquí donde pido su ayuda para dejar al final una buena clase de paginacion que solo utilice mysqli, espero que me puedan ayudar ya que creo que este tema sera buena ayuda para las demás personas que necesiten crear una paginacion rápida.

Gracias.

Código PHP:
<?php

if(empty($_pagi_sql)){

die(
"<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
}

if(empty(
$_pagi_cuantos)){

$_pagi_cuantos 20;
}

if(!isset(
$_pagi_mostrar_errores)){

$_pagi_mostrar_errores true;
}

if(!isset(
$_pagi_conteo_alternativo)){

$_pagi_conteo_alternativo false;
}

if(!isset(
$_pagi_separador)){

$_pagi_separador " | ";
}

if(isset(
$_pagi_nav_estilo)){

$_pagi_nav_estilo_mod "class=\"$_pagi_nav_estilo\"";
}else{

$_pagi_nav_estilo_mod "";
}

if(!isset(
$_pagi_nav_anterior)){

$_pagi_nav_anterior "&laquo; Anterior";
}

if(!isset(
$_pagi_nav_siguiente)){

$_pagi_nav_siguiente "Siguiente &raquo;";
}

if(!isset(
$_pagi_nav_primera)){

$_pagi_nav_primera "&laquo;&laquo; Primera";
}

if(!isset(
$_pagi_nav_ultima)){

$_pagi_nav_ultima "&Uacute;ltima &raquo;&raquo;";
}

$NombPag_Primera $_SERVER['PHP_SELF'];

$Desti_Pag "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; url=$NombPag_Primera\">
 <script type=\"text/javascript\"> window.location=\"$NombPag_Primera\"; </script>"
;

@
$_Rec_pagn $_GET['_pagi_pg'];
if (!
preg_match("/^[0-9]{0,25}$/"$_Rec_pagn)) die ($Desti_Pag);


if (empty(
$_GET['_pagi_pg'])){

$_pagi_actual 1;
}else{

$_pagi_actual $_GET['_pagi_pg'];
}

if(
$_pagi_conteo_alternativo == false){
$_pagi_sqlConta preg_replace("/select[[:space:]](.*)[[:space:]]from/""SELECT COUNT(*) FROM"$_pagi_sql);
$_pagi_result2 mysql_query($_pagi_sqlConta);

if(
$_pagi_result2 == false && $_pagi_mostrar_errores == true){
die (
" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysqli_error()."</b>");
}
$_pagi_totalReg mysql_result($_pagi_result2,0,0);    
$_Num_regis_Consul mysqli_num_rows($_pagi_result);     
}else{
$_pagi_result3 mysql_query($_pagi_sql);

if(
$_pagi_result3 == false && $_pagi_mostrar_errores == true){
die (
" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".mysqli_error()."</b>");
}
$_pagi_totalReg mysqli_num_rows($_pagi_result3);
$_Num_regis_Consul mysqli_num_rows($_pagi_result); 
}
$_pagi_totalPags ceil($_Num_regis_Consul $_pagi_cuantos); 

$_pagi_enlace $_SERVER['PHP_SELF'];
$_pagi_query_string "?";

if(!isset(
$_pagi_propagar)){

if (isset(
$_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); 
$_pagi_propagar array_keys($_GET);
}elseif(!
is_array($_pagi_propagar)){

die(
"<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
}

foreach(
$_pagi_propagar as $var){
if(isset(
$GLOBALS[$var])){

$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
}elseif(isset(
$_REQUEST[$var])){

$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
}
}

$_pagi_enlace .= $_pagi_query_string;

$_pagi_navegacion_temporal = array();
if (
$_pagi_actual != 1){

$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".
$_pagi_url."'>$_pagi_nav_primera</a>";


$_pagi_url $_pagi_actual 1
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".
$_pagi_url."'>$_pagi_nav_anterior</a>";
}

if (
$enlacesdepaginacion 0)     
{

$_pagi_nav_num_enlaces $enlacesdepaginacion;
}
else
{

}

if(!isset(
$_pagi_nav_num_enlaces)){

$_pagi_nav_desde 1;
$_pagi_nav_hasta $_pagi_totalPags;
}else{

$_pagi_nav_intervalo ceil($_pagi_nav_num_enlaces/2) - 1;

$_pagi_nav_desde $_pagi_actual $_pagi_nav_intervalo;

$_pagi_nav_hasta $_pagi_actual $_pagi_nav_intervalo;

if(
$_pagi_nav_desde 1){

$_pagi_nav_hasta -= ($_pagi_nav_desde 1);

$_pagi_nav_desde 1;
}

if(
$_pagi_nav_hasta $_pagi_totalPags){

$_pagi_nav_desde -= ($_pagi_nav_hasta $_pagi_totalPags);

$_pagi_nav_hasta $_pagi_totalPags;

if(
$_pagi_nav_desde 1){
$_pagi_nav_desde 1;
}
}
}

for (
$_pagi_i $_pagi_nav_desde$_pagi_i<=$_pagi_nav_hasta$_pagi_i++){
if (
$_pagi_i == $_pagi_actual) {

$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
}else{

$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".
$_pagi_i."'>".$_pagi_i."</a>";
}
}

if (
$_pagi_actual $_pagi_totalPags){

$_pagi_url $_pagi_actual 1
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".
$_pagi_url."'>$_pagi_nav_siguiente</a>";


$_pagi_url $_pagi_totalPags;
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".
$_pagi_url."'>$_pagi_nav_ultima</a>";
}
$_pagi_navegacion implode($_pagi_separador$_pagi_navegacion_temporal);

$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;


$_pagi_sqlLim $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
$_pagi_result mysql_query($_pagi_sqlLim);

if(
$_pagi_result == false && $_pagi_mostrar_errores == true){
die (
"Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
}

$_pagi_desde $_pagi_inicial 1;


$_pagi_hasta $_pagi_inicial $_pagi_cuantos;
if(
$_pagi_hasta $_Num_regis_Consul){

$_pagi_hasta $_Num_regis_Consul;
}

$_pagi_info "desde el $_pagi_desde hasta el $_pagi_hasta de un total de $_Num_regis_Consul";

?>
  #2 (permalink)  
Antiguo 11/04/2014, 11:17
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: Arreglar Clase de Paginación

Cuidado con el script, aparte de que no usa la libreria mysqli, no lo recomiendo por los siguientes motivos:

Es procedual, está sucia...A lo que me refiero es que el html está fuertemenete unido con las funciones php, es un mareo tener que editarlo. Lo bueno seria una función que te devuelva los numeros que necesites en un array y en otro sitio usas los datos con html.


Y Esto es una preferncia personal ya que conozco programadores veteranos que dicen lo opuesto: Errores mysql...Nunca le muestres a un usuario final un error mysql. Debemos hacer las aplicaciones invulnerables, pero y si algo se nos olvida y alguien lo descubre..le estamos dando una terminal para experimentos, por cada codigo maligno que introduce mysql le responde como va (así lo veo yo).

Mis funciones de paginación hacen la query, ordenan los resultados, y a parte de los mismos devuelven un array con las páginas que hay, la página actual, y si tiene que ser cantidad de entradas y entradas actualmente visibles....Ese array se pasa a la vista, un html en el que se van con pequeñas condiciones las cifras.

un saludo

Etiquetas: arreglar, clase, mysql, registro, select, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:58.