Foros del Web » Programando para Internet » PHP »

paginar imagenes en columnas

Estas en el tema de paginar imagenes en columnas en el foro de PHP en Foros del Web. Estoy tratando de paginar esta galeria de imagenes, las cuales estan en columnas de 3, pero cuando uso una clase paginador, como las que se ...
  #1 (permalink)  
Antiguo 09/12/2003, 22:36
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 15 años, 6 meses
Puntos: 0
paginar imagenes en columnas

Estoy tratando de paginar esta galeria de imagenes, las cuales estan en columnas de 3, pero cuando uso una clase paginador, como las que se encuentra en este foro la organizacion se altera.

Me gustaria paginar de 9 imagenes por pagina por ejemplo. Les agradecere alguna sugerencia.

aqui el codigo pero sin el paginador
-----------------------------------------------------------------------------


<?php
##-------------------------- RESULTADO EN COLUMNAS
$result=mysql_query("select * from galeria order by id_galeria desc",$link);
//$row=mysql_fetch_array($result);
$carpeta="imagenes"; //carpeta donde se guardaran las imagenes
echo "<table align=center>";

$columnes = 3; # Número de columnas (variable)
echo "<tr><td colspan=$columnes>$rows Resultados </td></tr>";
if (mysql_num_rows($result)==0){echo "<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> ";}

for ($i=1; $row = mysql_fetch_row ($result); $i++) {
$resto = ($i % $columnes); # Número de celda del <tr> en que nos encontramos
if ($resto == 1) {echo "<tr valign=\"top\">";} # Si es la primera celda, abrimos <tr>
echo "<td>$row[1]<br><img src=\"$carpeta/$row[7]\" width=\"120\"><br>$row[2]</td>";

if ($resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr>
}
if ($resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
$ajust = $columnes - $resto; # Número de huecos necesarios
for ($j = 0; $j < $ajust; $j++) {echo "<td>&nbsp;</td>";}
echo "</tr>"; # Cerramos la última línea </tr>
}

echo "</table>";

?>


//----------------------------------- PAGINADOR ------------------------------------------------

<?
// Obtenemos la página actual, por el método que más nos guste
// Por defecto, la página se propaga por la variable $pagina
$pagina = $HTTP_GET_VARS["pagina"];
// Incluimos la Clase Paginado
include("class.paginado.php");
$rs = new paginado($link);// instanciamos un objeto
$rs->pagina($pagina); // Le indicamos en que página estamos - 1 por defecto
$rs->porPagina(50); // Le decimos cuantos registros por página queremos - 20 por defecto
$rs->propagar(Login); // Le decimos las variables que queremos propagar en los links
if(!$rs->query("select * from noticias a, categorias b where a.id_cat=b.id_cate and a.sub1=b.sub1 and a.sub2=b.sub2 and a.sub3=b.sub3 order by a.id desc", $link))
// Y ejecutamos nuestra consulta.
{
die( $rs->error()
);
// Si Query devolvió falso, hubo un error y lo mostramos.
}
echo "<b>Resultado de Búsqueda:</b>&nbsp;&nbsp;&nbsp;Mostrando ".$rs->desde()." - ".$rs->hasta()." de un total de ".$rs->total()."<hr>";
//Recorremos todos los resultados y los mostramos.
while($row = $rs->obtenerArray())
{
echo "<tr><td>&nbsp;$row[id]</td><td>&nbsp;$row[titulo]</td><td>&nbsp;$row[nombre]</td>";
echo "<td>&nbsp;<a href=\"actualiza_contenido.php?id=$row[id]&Ruta=$row[id_cat]&Ruta1=$row[sub1]&Ruta2=$row[sub2]&Ruta3=$row[sub3]\">Actualizar</a> - <a href=\"confirmacion.php?id=$row[id]&nombre=$row[titulo]\">Borrar</a></td></tr>";

}
// Finalmente mostramos los medios para la navegación entre los resultados.
echo $rs->anterior()." - ".$rs->nroPaginas()." - ".$rs->siguiente();

?>
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #2 (permalink)  
Antiguo 10/12/2003, 16:51
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
El truco esta en substituir el while($row = $rs->obtenerArray()) por un for($i=1; $row = $rs->obtenerArray(); $i++)

Así tenemos un "contador" ($i) que te indica el número de imagen que estás cargando, y así puedes obtener el módulo (resto) con respecto al número de columnas que quieras.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 12/12/2003, 11:11
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 15 años, 6 meses
Puntos: 0
Te agradezco cain, lo voy a probar y te aviso

Gracias
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #4 (permalink)  
Antiguo 13/12/2003, 15:25
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 15 años, 6 meses
Puntos: 0
He ingresqado ese cambio.... pero se multiplican las imagenes, es decir se repite la tabla de tres columnas varias veces. aqui el codigo de paginacion y el de la tabala de columnas

<?
// Obtenemos la página actual, por el método que más nos guste
// Por defecto, la página se propaga por la variable $pagina
$pagina = $HTTP_GET_VARS["pagina"];
// Incluimos la Clase Paginado
include("class.paginado.php");
$rs = new paginado($link);// instanciamos un objeto
$rs->pagina($pagina); // Le indicamos en que página estamos - 1 por defecto
$rs->porPagina(4); // Le decimos cuantos registros por página queremos - 20 por defecto
$rs->propagar(Login); // Le decimos las variables que queremos propagar en los links
if(!$rs->query("select * from galeria order by id_galeria desc", $link))
// Y ejecutamos nuestra consulta.
{
die( $rs->error()
);
// Si Query devolvió falso, hubo un error y lo mostramos.
}
echo "<b>Resultado de Búsqueda:</b>&nbsp;&nbsp;&nbsp;Mostrando ".$rs->desde()." - ".$rs->hasta()." de un total de ".$rs->total()."<hr>";
//Recorremos todos los resultados y los mostramos.
//while($row = $rs->obtenerArray())
for($i=1; $row = $rs->obtenerArray(); $i++)

{
//------------------------------------------------------------------------------
$result=mysql_query("select * from galeria order by id_galeria desc",$link);
//$row=mysql_fetch_array($result);
$carpeta="imagenes"; //carpeta donde se guardaran las imagenes
echo "<table align=center border=1>";

$columnes = 3; # Número de columnas (variable)
echo "<tr><td colspan=$columnes>$rows Resultados </td></tr>";
if (mysql_num_rows($result)==0){echo "<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> ";}

for ($i=1; $row = mysql_fetch_row ($result); $i++) {
$resto = ($i % $columnes); # Número de celda del <tr> en que nos encontramos
if ($resto == 1) {echo "<tr valign=top align=center>";} # Si es la primera celda, abrimos <tr>
//---------------------------------------aqui se visualizaran las imagenes
echo "<td><b>$row[1]</b><br><a href=\"#\" onClick=\"afoto('$carpeta/$row[7]','Actualizer Web®: $row[1]--------------------------------------');return false\"><img src=\"$carpeta/$row[7]\" width=\"120\"></a><br>$row[2]</td>";

if ($resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr>
}
if ($resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
$ajust = $columnes - $resto; # Número de huecos necesarios
for ($j = 0; $j < $ajust; $j++) {echo "<td>&nbsp;</td>";}
echo "</tr>"; # Cerramos la última línea </tr>
}
echo "</table>";
//-------------------------------------------------------------------------------
}
// Finalmente mostramos los medios para la navegación entre los resultados.
echo $rs->anterior()." - ".$rs->nroPaginas()." - ".$rs->siguiente();

?>
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #5 (permalink)  
Antiguo 13/12/2003, 22:42
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
La verdad es que acabo de probar la clase y está muy buena... no he revisado el código aún, pero para paginar en columnas por ahora puedes introducir tu código a la hora de obtener los registros... sería más o menos así:
Código PHP:
<?php
$filas 
3;
$columnas 5;
$sql "SELECT * FROM tabla";

//Calculamos el total de registros por página.
$reg_por_pagina = ($filas*$columnas);

// Conectamos a la Base de Datos
$Conn mysql_connect("localhost""tu_user""tu_password");
mysql_select_db("tu_bd");
// Obtenemos la página actual, por el método que más nos guste
// Por defecto, la página se propaga por la variable $pagina
if (!isset($_GET['pagina'])){
    
$pagina '';
}else{
    
$pagina $_GET['pagina'];
}

// Incluimos la Clase Paginado
include("./class.paginado.php");
$rs = new paginado($Conn); // instanciamos un objeto
$rs->pagina($pagina); // Le indicamos en que página estamos - 1 por defecto
$rs->porPagina($reg_por_pagina); // Le decimos cuantos registros por página queremos - 20 por defecto
$rs->propagar("forum"); // Le decimos las variables que queremos propagar en los links
if(!$rs->query($sql)){ // Y ejecutamos nuestra consulta.
    
die( $rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos.
}
echo 
"Mostrando ".$rs->desde()." - ".$rs->hasta()." de un total de ".$rs->total()."<br>";// Recorremos todos los resultados y los mostramos.

/*
 *Acá paginamos en columnas (este no es precisamente tu 
 *código, pero puedes utilizar el tuyo sin problemas)
*/

$final 0;
echo 
"<table border=\"1\">";
for(
$i=1;$i<=$filas && $final==0;$i++){
    echo 
"<tr>";
    
$n 1;
    while((
$n%($columnas+1)) != 0){
        echo 
"<td>";        
        if(
$registro $row $rs->obtenerArray()){
            echo 
$row["nombre"];
            echo 
$row["imagen"];
        }else{
            echo 
"&nbsp";
            
$final 1;
        }
        echo 
"</td>";    
        
$n++;
    }
    echo 
"</tr>";
}


// Finalmente mostramos los medios para la navegación entre los resultados.
echo "<tr><td colspan=\"$columnas\">";
echo 
$rs->anterior()." - ".$rs->nroPaginas()." - ".$rs->siguiente();
echo 
"</td></tr></table>";
?>
Saludos

Última edición por jpinedo; 13/12/2003 a las 22:44
  #6 (permalink)  
Antiguo 13/12/2003, 23:37
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 15 años, 6 meses
Puntos: 0
Te agradezco jpinedo, el codigo funciona fenomenal.

Gracias
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #7 (permalink)  
Antiguo 14/12/2003, 17:29
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
En realidad era sólo un ejemplo... el código de "columnizar" lo hice hace tiempo y, si no me equivoco, tiene un error.
Creo que si el número registros de la última página completa exactamente una fila, se crea una fila vacía adicional... ahora no tengo tiempo de revisarlo, pero dejo la aclaración para cualquiera...
Tal vez el código que posteaste tú no tenga ese error. En ese caso, mejor utiliza el tuyo.

Saludos

PD: No olvides de postear acá las correciones que hagas para enterarnos todos...
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 13:12.