Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Mostrar todas las Imágenes de una carpeta mediante PHP

Estas en el tema de Mostrar todas las Imágenes de una carpeta mediante PHP en el foro de PHP en Foros del Web. Hola, me gustaria que me ayudasen a modificar éste código vosotros que entendeis, yo no entiendo apenas PHP aun me ando peleando. Buscaaaando y buscaando ...
  #1 (permalink)  
Antiguo 25/01/2014, 11:36
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Mostrar todas las Imágenes de una carpeta mediante PHP

Hola, me gustaria que me ayudasen a modificar éste código vosotros que entendeis, yo no entiendo apenas PHP aun me ando peleando. Buscaaaando y buscaando por internet lo unico que he encontrado que se parece a lo que necesito es este codigo:

Código PHP:
<?php 
// para leer el directorio
$ruta "archivos/"
$filehandle opendir($ruta); 
while (
$file readdir($filehandle)) {
    if (
$file != "." && $file != ".." ) {
        
$arch=$file;
        
$archi=$arch.'*'.$archi;
    }
}

closedir($filehandle); 



 
// paginando
$archivosfile=explode("*"$archi);
$currentpage $_SERVER['PHP_SELF']; // pagina en la que se encuentra
$total=(count($archivosfile)-1);
$maxRows_Blogdenotas 10;  // cantidad maxima de archivos a mostrar por pagina
$pageNum_Blogdenotas 0;

if (isset(
$_GET['pag'])) {
  
$pageNum_Blogdenotas intval($_GET['pag']);
}

$startRow_Blogdenotas $pageNum_Blogdenotas $maxRows_Blogdenotas;

if (isset(
$_GET['pag'])) {
  
$pageNum_Blogdenotas intval($_GET['pag']);
}

$startRow_Blogdenotas $pageNum_Blogdenotas $maxRows_Blogdenotas;
$totalRows_Blogdenotas $total;
$totalPages_Blogdenotas ceil($totalRows_Blogdenotas/$maxRows_Blogdenotas)-1;
$archivos array_slice($archivosfile$startRow_Blogdenotas$maxRows_Blogdenotas);

// paginando   

?>
Total Archivos:&nbsp;<?php echo $total;  ?><br /><br />
<table border="0">
                    <tr>
                      <td><?php if ($pageNum_Blogdenotas 0) { // Show if not first page ?>
                            <a href="<?php echo $currentpage?>?pag=0">Primero</a>
                            <?php }else{ // Show if not first page ?>
                            <span class="style1">Primero</span>                            <?php ?>                      </td>
                      <td><?php if ($pageNum_Blogdenotas 0) { // Show if not first page ?>
                            <a href="<?php echo $currentpage?>?pag=<?php echo htmlentities($_GET['pag']-1); ?>">Anterior</a>
                            <?php }else{ // Show if not first page ?>
                            <span class="style1">Anterior</span>                            <?php ?>                      </td>
                      <td><?php if ($pageNum_Blogdenotas $totalPages_Blogdenotas) { // Show if not last page ?>
                            <a href="<?php echo $currentpage?>?pag=<?php echo htmlentities($_GET['pag']+1); ?>">Siguiente</a>
                            <?php }else{ // Show if not last page ?>
                            <span class="style1">Siguiente</span>                            <?php ?>                      </td>
                      <td><?php if ($pageNum_Blogdenotas $totalPages_Blogdenotas) { // Show if not last page ?>
                            <a href="<?php echo $currentpage?>?pag=<?php echo $totalPages_Blogdenotas ?>">Ultimo</a>
                            <?php }else{ // Show if not last page ?>
                            <span class="style1">Ultimo</span>                            <?php ?>                      </td>
                    </tr>
                  </table>
<div>                  Mostrando <?php echo ($startRow_Blogdenotas 1?> a <?php echo min($startRow_Blogdenotas $maxRows_Blogdenotas$totalRows_Blogdenotas?> de <?php echo $totalRows_Blogdenotas ?></div><br /><br />

<?php
foreach ($archivos as $archivo) { 
echo 
'<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" style="width:200px;" /></a>'; }
?>

Éste código lee todas las imágenes de una carpeta y las muestra con un sistema de paginación que puedes aplicar limite de imagenes por página.

Vale, lo que yo necesito es modificar este o encontrar un código que solo me muestre las imágenes de una forma ordenada ascendentemente, es decir, desde la imagen 01.png hasta la imagen 20.png por ejemplo, porque éste codigo de aquí nose si muestra las imagenes aleatorias o descendiente 20>1, no lo pone ordenado y ademas no quiero que tenga sistema de paginado ni me ponga nada de información en texto, solo quiero que se muestren las imagenes que hallan en la carpeta de una forma ordenada de < y ya está.

He intentado borrando parte del código, quitar lo del paginádo y los textos, pero me he quedado en que no se como ponerlo ordanadamente de menor a mayor, este es el código que me quedó:


Código PHP:
<?php 
// para leer el directorio
$ruta "./imagenes/"
$filehandle opendir($ruta); 
while (
$file readdir($filehandle)) {
    if (
$file != "." && $file != ".." ) {
        
$arch=$file;
        
$archi=$arch.'*'.$archi;
    }
}

closedir($filehandle); 

// paginando
$archivosfile=explode("*"$archi);
$currentpage $_SERVER['PHP_SELF']; // pagina en la que se encuentra
$total=(count($archivosfile)-1);
$maxRows_Blogdenotas 60;  // cantidad maxima de archivos a mostrar por pagina
$pageNum_Blogdenotas 0;

if (isset(
$_GET['pag'])) {
  
$pageNum_Blogdenotas intval($_GET['pag']);
}

$startRow_Blogdenotas $pageNum_Blogdenotas $maxRows_Blogdenotas;

if (isset(
$_GET['pag'])) {
  
$pageNum_Blogdenotas intval($_GET['pag']);
}

$startRow_Blogdenotas $pageNum_Blogdenotas $maxRows_Blogdenotas;
$totalRows_Blogdenotas $total;
$totalPages_Blogdenotas ceil($totalRows_Blogdenotas/$maxRows_Blogdenotas)-1;
$archivos array_slice($archivosfile$startRow_Blogdenotas$maxRows_Blogdenotas);

// paginando   

?>
<br /><br />

<?php
foreach ($archivos as $archivo) { 
echo 
'<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a>'; }
?>

Si se me permite como ejemplo, quiero poner un enlace para que vean la forma de como quiero las imágenes, solo que aquí están mal por que no lo hice con PHP, puse <img src=""> del 1 al 60 para que me coja todas las imágenes, pero como solo hay 19 páginas, los enlaces que sobran cojen otras imagenes aleatorias y se vuelve a repetir, asi queda fatal:


http://www.onepiecemangayanime.com/mangaonline/manga/tomo073/735/vertodo.html

Aquí como queda en PHP actualmente con el código de abajo:

http://www.onepiecemangayanime.com/mangaonline/manga/tomo073/735/vertodo.php

La primera página se muestra al final XD, por eso digo de que quede ordenado como el de HTML


Por eso tiré a usar php pero lo entiendo poco, espero haberme expresado lo mejor posible para que puedan ayudarme.

Un Saludo,

atentamente Samu.

Última edición por samu747; 25/01/2014 a las 11:44 Razón: modificar enlaces
  #2 (permalink)  
Antiguo 25/01/2014, 13:03
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Creo entender que lo necesitas es sort para ordenar el array

http://php.net/manual/es/function.sort.php

espero que te sirva .
  #3 (permalink)  
Antiguo 25/01/2014, 13:07
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Puf me quedo = xD apenas entiendo php, he revisado el array pero nose si ahi te deja ordenar archivos sin poner su nombre, cojiendo los de la carpeta, no lo se tio, gracias por el aporte de todas formas :)
  #4 (permalink)  
Antiguo 25/01/2014, 13:17
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

prueba añadiendo sort en el foreach
Código PHP:
Ver original
  1. foreach (sort($archivos , SORT_NUMERIC ) as $archivo)

deberia de funcionarte.

Última edición por webankenovi; 25/01/2014 a las 13:25
  #5 (permalink)  
Antiguo 25/01/2014, 13:30
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Cita:
Iniciado por webankenovi Ver Mensaje
prueba añadiendo sort en el foreach
Código PHP:
Ver original
  1. foreach (sort($archivos , SORT_NUMERIC ) as $archivo)

deberia de funcionarte.
Le Añadi sort pero ahora no se ve ninguna pagina:

Código PHP:
<?php
foreach (sort($archivos SORT_NUMERIC ) as $archivo) { 
echo 
'<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a>'; }
?>
http://www.onepiecemangayanime.com/mangaonline/manga/tomo073/735/vertodo.php
  #6 (permalink)  
Antiguo 25/01/2014, 13:34
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

perdon tuve un error

Código PHP:
Ver original
  1. sort($archivos )
  2.  
  3. foreach ($archivos as $archivo)

aqui te dejo un ejemplo basico

Código PHP:
Ver original
  1. $archivos = array('08.png','84.png','01.png');
  2.  
  3. sort($archivos);
  4.  
  5.     foreach ($archivos as $archivo)
  6.     {
  7.         echo $archivo;
  8.     }
  #7 (permalink)  
Antiguo 25/01/2014, 13:52
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

El primer metodo me funcionó, pero dentro del codigo tengo algo que tiene enlace de carpeta no de imagen y me genera una imagen rota mira, baja de la primera página y lo verás:

http://www.onepiecemangayanime.com/mangaonline/manga/tomo073/735/vertodo.php

Se ordenan correctamente, pero mira ver si tu me puedes localizar esa imagen rota que se genera, éste es el código que tengo ahora:


Código PHP:
<?php 
// para leer el directorio
$ruta "./imagenes/"
$filehandle opendir($ruta); 
while (
$file readdir($filehandle)) {
    if (
$file != "." && $file != ".." ) {
        
$arch=$file;
        
$archi=$arch.'*'.$archi;
    }
}

closedir($filehandle); 

// paginando
$archivosfile=explode("*"$archi);
$currentpage $_SERVER['PHP_SELF']; // pagina en la que se encuentra
$total=(count($archivosfile)-1);
$maxRows_Blogdenotas 60;  // cantidad maxima de archivos a mostrar por pagina
$pageNum_Blogdenotas 0;

if (isset(
$_GET['pag'])) {
  
$pageNum_Blogdenotas intval($_GET['pag']);
}

$startRow_Blogdenotas $pageNum_Blogdenotas $maxRows_Blogdenotas;

if (isset(
$_GET['pag'])) {
  
$pageNum_Blogdenotas intval($_GET['pag']);
}

$startRow_Blogdenotas $pageNum_Blogdenotas $maxRows_Blogdenotas;
$totalRows_Blogdenotas $total;
$totalPages_Blogdenotas ceil($totalRows_Blogdenotas/$maxRows_Blogdenotas)-1;
$archivos array_slice($archivosfile$startRow_Blogdenotas$maxRows_Blogdenotas);

// paginando   

?>
<br /><br />

<?php
sort
($archivos);
foreach (
$archivos as $archivo) { 
echo 
'<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a>'; }
?>

        <div style="position:fixed;    top:5px; left:5px; height:37px; width:210px;">
            <a href="javascript:history.back()" onMouseOver="swapImage('atras','smileatras')"
            onMouseOut="swapImage('atras','nosmileatras')">
            <img src="../../imagenes/Botinactivos/atras.gif"
            width="210"
            height="37"
            border="0"
            name="atras" alt="atras"></a>
        </div> 
        <div style="position:fixed;    top:5px; right:5px; height:37px; width:210px;">
            <a href="./menu.html" onMouseOver="swapImage('menu','smilemenu')"
            onMouseOut="swapImage('menu','nosmilemenu')">
            <img src="../../imagenes/Botinactivos/menu.gif"
            width="210"
            height="37"
            border="0"
            name="menu" alt="Menu"></a>
        </div> 
        
    <a href="#" class="scrolltop"></a>
    
    </body>
</html>
  #8 (permalink)  
Antiguo 25/01/2014, 13:58
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Claro, esta empezando a contar desde ./imagenes/ luego sigue con ./imagenes/01.jpg - ./imagenes/02.jpg - ./imagenes/03.jpg - ./imagenes/04.jpg - ./imagenes/05.jpg - etc..

Nose por que cuenta una pagina que no hay, deberia de contar solo las que hay, es decir, a partir de la ./imagenes/01.jpg

Alguna forma de evitar eso?
  #9 (permalink)  
Antiguo 25/01/2014, 14:02
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Lo cuenta por que esta dentro del array o lo eliminas o puedes verificar que los archivos sean archivos y verificar si es un directorio

Código PHP:
Ver original
  1. sort($archivos);
  2.      
  3.         foreach ($archivos as $archivo)
  4.         {
  5.             if( ! is_dir($archivo))
  6.             {
  7.                 if( is_file($archivo))
  8.                 {
  9.                     echo $archivo;
  10.                 }
  11.             }
  12.         }

como estas pasando la ruta relativa te tendria que funcionar la verificacion.
  #10 (permalink)  
Antiguo 25/01/2014, 14:13
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

puf, seguramente lo he puesto mal, corrigeme sino, porque ahora solo se ve la ultima pagina xD

Código PHP:
<?php
    sort
($archivos);
         
            foreach (
$archivos as $archivo)
            {
                if( ! 
is_dir($archivo))
                {
                    if( 
is_file($archivo))
                    {
                        echo 
$archivo;
                    }
                }
            }

echo 
'<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a>'; }
?>
Ve verificando tu la pagina del link de arriba, asi no te lo pego mas veces xD
  #11 (permalink)  
Antiguo 25/01/2014, 14:29
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

es que el echo que pusiste tiene que estar dentro del foreach , yo te puse un ejemplo na mas

Código PHP:
Ver original
  1. <?php
  2.     sort($archivos);
  3.          
  4.             foreach ($archivos as $archivo)
  5.             {
  6.                 if( ! is_dir($ruta.$archivo))
  7.                 {
  8.                     if( is_file($ruta.$archivo))
  9.                     {
  10.                         echo '<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a>';
  11.                     }
  12.                 }
  13.             }
  14. ?>

y faltaba añadir la ruta al is_dir y is_file , ahora tiene que funcionarte sin problemas.
  #12 (permalink)  
Antiguo 25/01/2014, 14:34
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Listo !!!! funciona a la perfección, muchisimas gracias tio :D !!! yo es que soy muy patoso en el php xD ni si quiera me di cuenta que estaba dejando fuera el echo, a ver si poco a poco se va aprendiendo con los fallitos :)

Gracias de verdad :D espero que a mas gente le sirva, porque no he encontrado respuesta a esto por internet
  #13 (permalink)  
Antiguo 25/01/2014, 14:56
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Tambien puedes cambiar esta parte

Código PHP:
Ver original
  1. <?php
  2. // para leer el directorio
  3. $ruta = "./imagenes/";
  4. $filehandle = opendir($ruta);
  5. while ($file = readdir($filehandle)) {
  6.     if ($file != "." && $file != ".." ) {
  7.         $arch=$file;
  8.         $archi=$arch.'*'.$archi;
  9.     }
  10. }
  11.  
  12. closedir($filehandle);
  13.  
  14. // paginando
  15. $archivosfile=explode("*", $archi);
  16. $currentpage = $_SERVER['PHP_SELF']; // pagina en la que se encuentra
  17. $total=(count($archivosfile)-1);
  18. $maxRows_Blogdenotas = 60;  // cantidad maxima de archivos a mostrar por pagina
  19. $pageNum_Blogdenotas = 0;

por

Código PHP:
Ver original
  1. $ruta = "./imagenes/";
  2. $archivosfile=scandir($ruta);
  3. $currentpage = $_SERVER['PHP_SELF']; // pagina en la que se encuentra
  4. $total=(count($archivosfile)-1);
  5. $maxRows_Blogdenotas = 60;  // cantidad maxima de archivos a mostrar por pagina
  6. $pageNum_Blogdenotas = 0;

scandir - http://php.net/manual/es/function.scandir.php
  #14 (permalink)  
Antiguo 25/01/2014, 15:09
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Gracias, asi quito el codigo innecesario, lo probaré a ver si me funciona, si me falla algo te comento :)
  #15 (permalink)  
Antiguo 25/01/2014, 15:40
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Ostras, ocurre un problema que me he fijado, hay alguna forma de que le aplique un <br> para cada imagen que coja? por que hay algunas que son mas pequeñas y se ponen 2 en la misma fila, se agranda y se queda mal :( mira:

http://www.onepiecemangayanime.com/mangaonline/manga/tomo005/036/vertodo.php
  #16 (permalink)  
Antiguo 26/01/2014, 06:59
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Lo añades al final

Código PHP:
Ver original
  1. echo '<a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a><br>';
  2.  
  3. // o prueba quiza con un parrafo
  4.  
  5. echo '<p><a href="'.$ruta.$archivo.'"><img src="'.$ruta.$archivo.'" /></a></p>';


ademas como idea podrias redimensionar las imagenes para que todas te queden por igual tamaño , investiga sobre ello.
  #17 (permalink)  
Antiguo 26/01/2014, 07:06
 
Fecha de Ingreso: enero-2014
Ubicación: Canarias
Mensajes: 16
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Mostrar todas las Imágenes de una carpeta mediante PHP

Genial, listo !! muchas gracias

Etiquetas: automaticamente, carpeta, enlaces, imagenes
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 12:04.