Autor
|
Tema: [SOLUCIONADO] Como controlar la Paginacion a gran escala ?? (Leído 4,245 veces)
|
Diabliyo
Desconectado
Mensajes: 1.441
shell# _
|
EDITADO...Hola: En la mayoria de mis sistemas web utilizo un par de funciones que me simplifican el trabajo de la paginacion, estas son las funciones: selector_paginacion() :: Esta funcion genera los numeros de hojas/paginas a mostrar, con ella se manejan diversos argumentos para hacer esta funcion multifuncional y portable. <?php function selector_paginacion( $base, $minimo, $hoja_actual, $enlace, $ajax_enlace, $capa_ajax ) { $cons= consultar( $base, "*" ); //si existe el numero de registros 'minimo' +1, entonces se producira la paginacion { echo "<div id=\"paginacion\">"; if( !strcmp( $ajax_enlace, "0") ) //Enlaces normales HTML/PHP { if( $hoja_actual>1 ) echo "<a href=\"". $enlace. "&pagina=". ($hoja_actual-1). "\">"; echo "<img src=\"../admin/imagenes/flecha_izquierda.png\" border=\"0\">"; if( $hoja_actual>1 ) echo "</a>"; for( $i=0; $i<$roll; $i++ ) { echo " "; if( $i==($hoja_actual-1) ) echo "<span style=\"background-color:white;\">". ($i+1). "</span>"; else echo "<a href=\"". $enlace. "&pagina=". ($i+1). "\"><span>". ($i+1). "</span></a>"; } echo " "; if( $hoja_actual<$roll ) echo "<a href=\"". $enlace. "&pagina=". ($hoja_actual+1). "\">"; echo "<img src=\"../admin/imagenes/flecha_derecha.png\" border=\"0\">"; if( $hoja_actual<$roll ) echo "</a>"; } else //enlaces AJAX { if( $hoja_actual>1 ) echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($hoja_actual-1). "', '". $capa_ajax. "', 'GET', '0' );\">"; echo "<img src=\"../admin/imagenes/flecha_izquierda.png\" border=\"0\">"; if( $hoja_actual>1 ) echo "</a>"; for( $i=0; $i<$roll; $i++ ) { echo " "; if( $i==($hoja_actual-1) ) echo "<span style=\"background-color:white;\">". ($i+1). "</span>"; else echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($i+1). "', '". $capa_ajax. "', 'GET', '0' );\"><span>". ($i+1). "</span></a>"; } echo " "; if( $hoja_actual<$roll ) echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($hoja_actual+1). "', '". $capa_ajax. "', 'GET', '0' );\">"; echo "<img src=\"../admin/imagenes/flecha_derecha.png\" border=\"0\">"; if( $hoja_actual<$roll ) echo "</a>"; } echo "</div>"; } } ?>
paginacion() :: esta funcion procesa la paginacion, brindando deteccion de errores o acceso a paginas inexistentes !!! function paginacion( $pagina, $base, $minimo ) { $cons= consultar( $base, "*" ); //si existen suficientes registros { //echo "<script language=\"javascript\" type=\"text/javascript\">alert('". $max_paginas. "');</script>"; //si estamos en el rango, entonces la consultar es favorable y no estan alterando la consulta if( $pagina>1 && $pagina<($max_paginas+1) ) return $pagina; } return 1; }
Mi Pregunta es: en la funcion selector_pagina() genero el numero de hojas, pero actualmente tengo mas de 20 hojas y se me ha echo un amontonadero :S, como logro re-paginas las hojas, permitiendo visualizar solo un rango de 10 hojas, ya si existen mas de 10 hojas poder pasar de hoja en hoja sin que se sature la barra donde se muestran las hojas :S !!??
|
|
« Última modificación: 1 Octubre 2008, 01:44 am por Diabliyo »
|
En línea
|
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
Desconectado
Mensajes: 5.110
|
Hola: En la mayoria de mis sistemas web utilizo un par de funciones que me simplifican el trabajo de la paginacion, estas son las funciones: selector_paginacion() :: Esta funcion genera los numeros de hojas/paginas a mostrar, con ella se manejan diversos argumentos para hacer esta funcion multifuncional y portable. <?php function selector_paginacion( $base, $minimo, $hoja_actual, $enlace, $ajax_enlace, $capa_ajax ) { $cons= consultar( $base, "*" ); //si existe el numero de registros 'minimo' +1, entonces se producira la paginacion { echo "<div id=\"paginacion\">"; if( !strcmp( $ajax_enlace, "0") ) //Enlaces normales HTML/PHP { if( $hoja_actual>1 ) echo "<a href=\"". $enlace. "&pagina=". ($hoja_actual-1). "\">"; echo "<img src=\"../admin/imagenes/flecha_izquierda.png\" border=\"0\">"; if( $hoja_actual>1 ) echo "</a>"; for( $i=0; $i<$roll; $i++ ) { echo " "; if( $i==($hoja_actual-1) ) echo "<span style=\"background-color:white;\">". ($i+1). "</span>"; else echo "<a href=\"". $enlace. "&pagina=". ($i+1). "\"><span>". ($i+1). "</span></a>"; } echo " "; if( $hoja_actual<$roll ) echo "<a href=\"". $enlace. "&pagina=". ($hoja_actual+1). "\">"; echo "<img src=\"../admin/imagenes/flecha_derecha.png\" border=\"0\">"; if( $hoja_actual<$roll ) echo "</a>"; } else //enlaces AJAX { if( $hoja_actual>1 ) echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($hoja_actual-1). "', '". $capa_ajax. "', 'GET', '0' );\">"; echo "<img src=\"../admin/imagenes/flecha_izquierda.png\" border=\"0\">"; if( $hoja_actual>1 ) echo "</a>"; for( $i=0; $i<$roll; $i++ ) { echo " "; if( $i==($hoja_actual-1) ) echo "<span style=\"background-color:white;\">". ($i+1). "</span>"; else echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($i+1). "', '". $capa_ajax. "', 'GET', '0' );\"><span>". ($i+1). "</span></a>"; } echo " "; if( $hoja_actual<$roll ) echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($hoja_actual+1). "', '". $capa_ajax. "', 'GET', '0' );\">"; echo "<img src=\"../admin/imagenes/flecha_derecha.png\" border=\"0\">"; if( $hoja_actual<$roll ) echo "</a>"; } echo "</div>"; } } ?>
....Cuál es la pregunta?
|
|
|
En línea
|
|
|
|
alone-in-the-chat
Desconectado
Mensajes: 587
|
Te recomendaria que coloques algunos parametros como opcionales . Y si encontrases la forma de hacerlo mas dinamico ( cambiar la imagen que muestras, no todos usaran divs por alli alguien quiere usar tablas ). Pero se ve interesante , le puede servir a muchos . Saludos¡¡
|
|
|
En línea
|
Because maybe You're gonna be the one that saves me And after all You're my wonderwall d[n_n]b
|
|
|
Diabliyo
Desconectado
Mensajes: 1.441
shell# _
|
Diculpen, pero coloque el tema in-completo, acabo de editarlo y lo coloque completo... Lo que sucedio es que publique el tema incompleto porque estaba realizando otra cosa y no pensaba tardarme mucho en completar el tema, mas que nada fue para evitarme que la sesion del foro expirase y tuviese que volver a teclear todo el contenido del POST... Disculpen mi torpesa, porfavor lean de nuevo el primer post ya que he completado el tema y mi pregunta !! Disculpen las molestias !! OJO: Aqui les cuelgo UNA IMAGEN de como se visualiza el exceso de paginacion :S. bye bye
|
|
« Última modificación: 25 Septiembre 2008, 21:14 pm por Diabliyo »
|
En línea
|
|
|
|
Hans el Topo
Desconectado
Mensajes: 1.754
"Estoy cansado de no hacer nada"
|
controlando el rango a mostrar y añadíendo siempre el primero y el último
por ejemplo quieres que aparezcan 10 índices de los 100 que tienes aparecería <- ir inicio 1 2 3 4 ... 10 -> ir final
si seleccionan el 20 que muestre como índices del 20 al 30
<- ir inicio 20 21 22 ... 30 -> ir final
algo que se suele hacer es mostrar 5 anteriores y 5 posterioes <- ir inicio 15 16 ... 20 ... 24 25 -> ir final
|
|
|
En línea
|
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
Desconectado
Mensajes: 5.110
|
Bueno tu funcion es selector_paginacion() y no selector_pagina().
Si quieres acotar los links de indices deberias paginar los mismos, cuentalos y dividelos entre el numero que desees que aparezca.
|
|
|
En línea
|
|
|
|
Diabliyo
Desconectado
Mensajes: 1.441
shell# _
|
Aqui un update del codigo, ya incluye la paginacion de las hojas mismas, para solo mostrar un rango de 11 hojas siempre !!.. function selector_paginacion( $base, $minimo, $hoja_actual, $enlace, $ajax_enlace, $capa_ajax ) { $max_paginas= 11; //maximo numero de paginas a visualizar por panel $cons= consultar( $base, "*" ); //si existe el numero de registros 'minimo' +1, entonces se producira la paginacion { echo "<div id=\"paginacion\">"; //inicio de paginacion if( $hoja_actual<(ceil($max_paginas/2)+1) ) $roll_start=0; else { $roll_start= ($hoja_actual-ceil($max_paginas/2)); else } //maximo de paginacion if( $hoja_actual<(ceil($max_paginas/2)+1) ) $roll_end= $max_paginas; else { $roll_end= ($hoja_actual+(ceil($max_paginas/2)))-1; else } /*######################################### ######## ENALCES NORMALES/HTML ######## #########################################*/ if( !strcmp( $ajax_enlace, "0") ) { if( $hoja_actual>1 ) echo "<a href=\"". $enlace. "&pagina=". ($hoja_actual-1). "\">"; echo "<img src=\"../admin/imagenes/flecha_izquierda.png\" border=\"0\">"; if( $hoja_actual>1 ) echo "</a>"; for( $i=$roll_start; $i<$roll_end; $i++ ) { echo " "; if( $i==($hoja_actual-1) ) echo "<span style=\"background-color:white;\">". ($i+1). "</span>"; else echo "<a href=\"". $enlace. "&pagina=". ($i+1). "\"><span>". ($i+1). "</span></a>"; } echo " "; if( $hoja_actual<$roll_end ) echo "<a href=\"". $enlace. "&pagina=". ($hoja_actual+1). "\">"; echo "<img src=\"../admin/imagenes/flecha_derecha.png\" border=\"0\">"; if( $hoja_actual<$roll_end ) echo "</a>"; } /*######################################### ############# ENALCES AJAX ############ #########################################*/ else { if( $hoja_actual>1 ) echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($hoja_actual-1). "', '". $capa_ajax. "', 'GET', '0' );\">"; echo "<img src=\"../admin/imagenes/flecha_izquierda.png\" border=\"0\">"; if( $hoja_actual>1 ) echo "</a>"; for( $i=$roll_start; $i<$roll_end; $i++ ) { echo " "; if( $i==($hoja_actual-1) ) echo "<span style=\"background-color:white;\">". ($i+1). "</span>"; else echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($i+1). "', '". $capa_ajax. "', 'GET', '0' );\"><span>". ($i+1). "</span></a>"; } echo " "; if( $hoja_actual<$roll_end ) echo "<a href=\"#\" onclick=\"cargar_datos( '". $ajax_enlace. "&pagina=". ($hoja_actual+1). "', '". $capa_ajax. "', 'GET', '0' );\">"; echo "<img src=\"../admin/imagenes/flecha_derecha.png\" border=\"0\">"; if( $hoja_actual<$roll_end ) echo "</a>"; } echo "</div>"; } } function paginacion( $pagina, $base, $minimo ) { $cons= consultar( $base, "*" ); //si existen suficientes registros { //echo "<script language=\"javascript\" type=\"text/javascript\">alert('". $max_paginas. "');</script>"; //si estamos en el rango, entonces la consultar es favorable y no estan alterando la consulta if( $pagina>1 && $pagina<($max_paginas+1) ) return $pagina; } return 1; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Nonagenario veterano de guerra piratea a gran escala, sin ser sancionado
Noticias
|
wolfbcn
|
1
|
2,263
|
30 Abril 2012, 18:32 pm
por crazykenny
|
|
|
Un fraude a gran escala se está extendiendo en Facebook
Noticias
|
wolfbcn
|
0
|
2,253
|
29 Abril 2013, 18:01 pm
por wolfbcn
|
|
|
La primera red eléctrica inteligente completa a gran escala ya está funcionando
Noticias
|
wolfbcn
|
0
|
1,624
|
13 Mayo 2013, 14:10 pm
por wolfbcn
|
|
|
Los expertos encuentran evidencias de un ataque a gran escala lanzado contra ...
Noticias
|
wolfbcn
|
0
|
1,786
|
18 Octubre 2013, 02:28 am
por wolfbcn
|
|
|
¿Cómo crear carnet's a gran escala?
Diseño Gráfico
|
curiosport
|
6
|
22,049
|
9 Septiembre 2016, 20:15 pm
por Platanito Mx
|
|