Foros del Web » Programando para Internet » PHP »

ordenar imagenes en pags. se puede?

Estas en el tema de ordenar imagenes en pags. se puede? en el foro de PHP en Foros del Web. Hola, tengo un script que me muestra todas las imagenes que tengo en un directorio en thumbnails y al hacerle click en ellas me las ...
  #1 (permalink)  
Antiguo 07/08/2003, 00:13
Avatar de sakul  
Fecha de Ingreso: julio-2002
Mensajes: 274
Antigüedad: 21 años, 8 meses
Puntos: 0
ordenar imagenes en pags. se puede?

Hola, tengo un script que me muestra todas las imagenes que tengo en un directorio en thumbnails y al hacerle click en ellas me las muestra grandes.

Ahora lo que quiero es saber si se peude modificar dicho script para que en vez de mostrar todas las imagenes una debajo de la otra, me las puede separar en pags. con un boton "SIGUIENTE".

Se puede??
  #2 (permalink)  
Antiguo 07/08/2003, 09:24
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Claro que se puede...

De hecho creo que sacar las imagenes de un directorio no es el modo usual (lo usual es listar las img en una BD), pero el teme se oye interesante...

Postea el codigo que usas actualmente y vemos como lo alteramos para que te funcione como lo quieres...

__________________
Manoloweb
  #3 (permalink)  
Antiguo 07/08/2003, 10:36
 
Fecha de Ingreso: julio-2003
Ubicación: Santo Domingo
Mensajes: 18
Antigüedad: 20 años, 8 meses
Puntos: 0
Una Pregunta:

1 - Cual es la forma mas efectiva de listar/consultar imagenes?

a) A mi enterder es guardando las img's en directorios para luego a acceder a travez de enlaces dinamicos, me explico:

print('<img src=" '.$seleccionar_dir.' '.$nombre_foto.' ">'):

Donde : $nombre_foto=$resultado_de_una_consulta_mysql['campo_nombre_foto'];

b) En vez de guardar las img's en una BD.

Me corrigen!
  #4 (permalink)  
Antiguo 07/08/2003, 11:01
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Tienes razón, es una manera sencilla de hacerlo, como podrás leer en mi mensaje sugiero "listar" las imagenes, no "guardarlas".

Auqnue la opción de guardarlas directamente en la BD no es necesariamente mala, sino que puede ser una buena solución en ciertos casos...

__________________
Manoloweb
  #5 (permalink)  
Antiguo 07/08/2003, 11:05
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
pues si, el royo es ademas de poner el nombre y la direccion es poner categoria, tamaño, file size, extension... etc, simplemente es aumentar los campos de tu tabla, añadiendo tambien en los Inser o Update dichos campos... pero digo lo mismo que manolo, mete algo de codigo, para ver como le metemos mano....
__________________
3w.valenciadjs.com
3w.laislatv.com
  #6 (permalink)  
Antiguo 07/08/2003, 14:33
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
Pues sacralas de un directorio no es dificil, se trata casi de lo mismo k si la sacamos de una base de datos, es cosa de leerlas todas y almacenar las rutas en un array, luego se cuenta cuantas hay en el array y se van paginando, facil no
incluso mas facil k tener k meterlas en la base de datos.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #7 (permalink)  
Antiguo 07/08/2003, 16:52
Avatar de sakul  
Fecha de Ingreso: julio-2002
Mensajes: 274
Antigüedad: 21 años, 8 meses
Puntos: 0
Ok, el siguiente código esta en una carpeta que contiene a otra llamada "uploaded" donde estan las fotos:

código archivo index.php:

</HEAD>
<?
$directorio = $_SERVER["DOCUMENT_ROOT"]."/fotos/uploaded";
$IdDir = opendir($directorio);
static $imagenes = array();

while ($archivo = readdir($IdDir))
{
if (($archivo == '.') || ($archivo == '..') || is_dir($directorio.$archivo) || ($archivo == ".DS_Store"))
continue;
else
$imagenes[] = $archivo;
}
closedir($IdDir);

sort($imagenes);
?><title>Fotos </title>
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<br>
<table border="0" align="center" cellpadding="7">
<tr align="center" class="epigrafeGaleria">
<?
$celda = 0;
foreach ($imagenes as $imagen)
{
$celda++;
if ($celda>4)
{
//cierro fila
echo "</tr>\n";
//abro fila
echo "<tr>\n";
$celda = 1;
}

//Muestro celda
?>
<td valign="top" align="center">
<p><a href="ver_imagen.php?imagen=<?=$imagen?>"><IMG src="dimensionar.php?imagen=uploaded/<?=$imagen?>&ancho=150" width="150" alt="Haga clic para ampliar" border="0"></a><br>
<?=ucwords(str_replace("_"," ",substr($imagen, 0, -4)))?>
</td>
<?
}
while ($celda<4)
{
echo "<td>&nbsp;</td>\n";
$celda++;
}
?>
</tr>
</table>

Última edición por sakul; 06/06/2005 a las 07:40
  #8 (permalink)  
Antiguo 07/08/2003, 17:00
 
Fecha de Ingreso: septiembre-2002
Mensajes: 122
Antigüedad: 21 años, 7 meses
Puntos: 0
Lo mas sencillo es como dice Manolo, listarlas en una base de datos y utilizar la funcion LIMIT de sql para paginar los resultados.
  #9 (permalink)  
Antiguo 07/08/2003, 17:03
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
pues si ya tiene las imagenes en un arary eso no es nesesario, pues se puede lograr lo mismo de una forma mas limpia, ademas tiene siempre la posivilidad de solo caragar el array la primera vez y luego ir pasandolo a las demas paginas por session o url, y esto aria menos carga para el servidor, ya teniendo las imagenes en un array, con un simple count() vemos cuantas imagenes son, el resto del proceso es lo mismo k si se hubiesen sacado de una base de datos.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #10 (permalink)  
Antiguo 07/08/2003, 17:15
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Bueno, pues lo veo muy simple...

Todo va a depender del array que creas al momento de traerte todas las imagenes del directorio...

Código PHP:
$porPag=10//Cuantas fotos vas a ver en cada pagina
$pagina=1;
$cuenta=1;
while (
$archivo readdir($IdDir))
  {
  if ((
$archivo == '.') || ($archivo == '..') || is_dir($directorio.$archivo) || ($archivo == ".DS_Store"))
  continue;
  else
  
$imagenes[$pagina][$cuenta] = $archivo;

  if (
$cuenta==$porPag){
    
$cuenta=1;
    
$pagina++;
  } else {
    
$cuenta++;
  }

Ahora si, para mostrarlas, solo debes obtener el numero de pagina y cambiar un poco tu script...

Código PHP:
$pag=(isset($_GET["pag"])) ? $_GET["pag"] : ;
$celda 0;
foreach (
$imagenes[$pag] as $imagen)
{
$celda++;
if (
$celda>4)
{
//cierro fila
echo "</tr>\n";
//abro fila
echo "<tr>\n";
$celda 1;

Y para hacer la barra de navegación de las páginas, simplemente cuenta las paginas así...

Código PHP:
for ($i=1;$i<count($imagenes);$i++) {
echo 
"<a href='?pag=".$i."'>".$i."</a> |";

Esto te daría ya el menu de navegación entre las páginas...

Espero que te sirva!!

__________________
Manoloweb
  #11 (permalink)  
Antiguo 07/08/2003, 17:35
Avatar de sakul  
Fecha de Ingreso: julio-2002
Mensajes: 274
Antigüedad: 21 años, 8 meses
Puntos: 0
ok, gracias lo pongo en practica y luego les cuento como me fue!
  #12 (permalink)  
Antiguo 07/08/2003, 17:50
Avatar de sakul  
Fecha de Ingreso: julio-2002
Mensajes: 274
Antigüedad: 21 años, 8 meses
Puntos: 0
Manoloweb, eres todo un genio... quedo de lujo!!!
  #13 (permalink)  
Antiguo 07/08/2003, 17:54
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
A ver... enseñalo!!!

Quiero ver como queda, porque mientras lo hacía solo podia medio-imaginarme como hiba a funcionar...

Tienes alguna dir. donde pueda verse el resultado?

__________________
Manoloweb
  #14 (permalink)  
Antiguo 07/08/2003, 18:05
Avatar de sakul  
Fecha de Ingreso: julio-2002
Mensajes: 274
Antigüedad: 21 años, 8 meses
Puntos: 0
si, ahi te va el antes y el despues

antes:

http://lalala.com.ar/fotos/

despues:

http://rlalalal.com.ar/fotos/index3.php

pero como veras hay un problema. Si en el directorio no hay un número que sea múltiplo de la cant. mostrada, el resto no arma una nueva pag. y se pierde....

se puede solucionar??

Última edición por sakul; 06/06/2005 a las 07:41
  #15 (permalink)  
Antiguo 07/08/2003, 19:35
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Eso es un error mio...

Usualmente para recorrer un array, se usa el total de registros MENOS UNO, ya que los arrays "automaticos" comienzan desde cero, pero yo he comenzado desde uno, y por eso te falta una página...

cambia esto:

for ($i=1;$i<count($imagenes);$i++) {
echo "<a href='?pag=".$i."'>".$i."</a> |";
}

Por esto...

for ($i=1;$i<=count($imagenes);$i++) {
echo "<a href='?pag=".$i."'>".$i."</a> |";
}
__________________
Manoloweb
  #16 (permalink)  
Antiguo 07/08/2003, 19:36
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5


Da gusto ver funcionando los scripts...

Pero tambien da gusto ver a esas preciosas rubias de la foto #1 jejeje
__________________
Manoloweb
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 17:35.