Foros del Web » Programando para Internet » PHP »

ayuda con script ¿?

Estas en el tema de ayuda con script ¿? en el foro de PHP en Foros del Web. Buenas compañeros, bueno, tengo un problema, he creado un paginador para unas galerias que tengo que salen desde MySQL, todo funciona, normalmente utilizaria un paginador ...
  #1 (permalink)  
Antiguo 02/03/2005, 23:33
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 13 años, 8 meses
Puntos: 406
ayuda con script ¿?

Buenas compañeros, bueno, tengo un problema, he creado un paginador para unas galerias que tengo que salen desde MySQL, todo funciona, normalmente utilizaria un paginador que ya existiera, pero necesitaba algo que se amoldara a mis necesidades, y lo he conseguido, con trabajo, pero lo consegui, eh aqui el codigo (el que lo necesite puede tomarlo).

Código PHP:
<?php
$_gallery_id_1
=mysql_query("SELECT id FROM galerias_img WHERE id_cat = '".$_GET["cat"]."'",$conexion) or die (mysql_error());

$_gallery_total_result=mysql_num_rows($_gallery_id_1);

$_gallery_nav "";

$_gallery_pag= array();

while (
$row_nav mysql_fetch_assoc($_gallery_id_1)) {

$_gallery_pag[]=$row_nav["id"];

}

if (isset(
$_GET["gallery_pag"])) {

$_gallery_pag_actual=$_GET["gallery_pag"];

}else {

for (
$pag=1$pag <=$_gallery_total_result$pag++) {

if (
$_gallery_pag[$pag-1] == $_GET["id"]) {

$_gallery_pag_actual=$pag;

}

}

}

$_gallery_ant=$_gallery_pag_actual 1;

$_gallery_sig=$_gallery_pag_actual 1;

if (
$_gallery_pag_actual == 1) {

$_gallery_nav .= " Anterior ";

}else {

$_gallery_nav .= "<a href = 'ver_img.php?id=".$_GET["id"]."&cat=".$_GET["cat"]."&gallery_pag=".$_gallery_ant."'>Anterior</a> ";

}

for (
$num=1$num <= $_gallery_total_result$num++) {

if (!isset(
$_GET["gallery_pag"])) {

if (
$_GET["id"] == $_gallery_pag[$num-1]) {

$_gallery_nav .=" <strong>".$num."</strong> ";

$_galery_viendo=$num;

}else {

$_gallery_nav .=" <a href = 'ver_img.php?id=".$_gallery_pag[$num-1]."&cat=".$_GET["cat"]."&gallery_pag=".$num."'>".$num."</a> ";

}

}else {

if (
$num == $_GET["gallery_pag"]) {

$_gallery_nav .=" <strong>".$num."</strong> ";

$_galery_viendo=$num;

}else {

$_gallery_nav .=" <a href = 'ver_img.php?id=".$_gallery_pag[$num-1]."&cat=".$_GET["cat"]."&gallery_pag=".$num."'>".$num."</a> ";

}

}

}

if (
$_gallery_pag_actual == $_gallery_total_result) {

$_gallery_nav .=" Siguiente";

}else {

$_gallery_nav .=" <a href = 'ver_img.php?id=".$_GET["id"]."&cat=".$_GET["cat"]."&gallery_pag=".$_gallery_sig."'>Siguiente</a>";

}

mysql_free_result($_gallery_id_1);

if (isset(
$_GET["gallery_pag"])) {

$_gallery_imagen=$_gallery_pag[$_gallery_pag_actual-1];

}else {

$_gallery_imagen=$_GET["id"];

}

$_gallery_result mysql_query("SELECT url FROM galerias_img WHERE id = '".$_gallery_imagen."'",$conexion) or die (mysql_error());

$_gallery_info "";

$_gallery_info .="Imagen <strong>".$_galery_viendo."</strong> de un total de <strong>".$_gallery_total_result."</strong>";

?>
El paginador lo hace a la perfecion, no tengo ningun problema con el, lo que si, es que no he logrado encontrar como limitar las paginas a mostrar, para que me entiendan mejor, si hay un total de 70 imagenes (una por pagina) muestra los 70 links "anterior 1 2 3 4 5...68 69 70 siguiente" he visto paginadores (tipo google) que se puede mostrar de 5 en 5 o de 10 en 10 si uno avanza por ejemplo a la pagina 6 se deja de ver la 1 y se ve la 11 y asi sucesibamente, es lo que he quirido lograr pero no he podido, alguno tiene alguna sujerencia ¿¿¿¿¿¿¿???????
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 03/03/2005, 12:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

El numero de links lo controlas con este for:
Código PHP:
for ($num=1$num <= $_gallery_total_result$num++) { 
Si lo cambias a algo como:
Código PHP:
$inicio=1;
$final=$_gallery_total_result;
for (
$num=$inicio$num <= $final$num++) { 
sigue haciendo lo mismo Pero ahora tienes 2 variables, $inicio y $final, que controlan el tamaño del bucle (numero de links). Ahora puedes jugar a calcular dinamicamente esos 2 valores. Por lo poco que he revisado en tu codigo, en $_gallery_pag_actual tienes la pagina actual que estas mostrando. Si es asi, podrias intentar un codigo como:
Código PHP:
$inicio=$_gallery_pag_actual-4;  // mostrar cuatro enlaces antes de la pagina actual
$inicio=(1>$inicio)?1:$inicio;  // para evitar que inicio sea menor que 1

$final=$inicio+10;  // para que muestre un total de 10 enlaces
$final=($_gallery_total_result<$final)?$_gallery_total_result:$final;  // para evitar que $final sea mayor que el numero total de paginas

for ($num=$inicio$num <= $final$num++) { 
Si te fijas, es sencillo. Calculas $inicio en funcion de lo que quieras, compruebas que no se haya salido de limites (que no sea menor que 1), calculas $final en funcion de $inicio, y compruebas que $final no se haya salido de limite (mayor que el numero total de paginas).

Saludos.

PD: EL codigo lo he escrito sobre la marcha, no me hago responsable de los daños que pueda producir en tu web, ordenador, familia o mascotas.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 03/03/2005 a las 12:13
  #3 (permalink)  
Antiguo 03/03/2005, 23:32
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 13 años, 8 meses
Puntos: 406
muchas gracias por responder, intentare lo que me has sujerido y espero que no pase de que no salga el resultado esperado jajaja
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
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:57.