Nueva pregunta

Pregunta:

Fecha: 25-02-2019 10:13:24 (En Español)

Buenas tardes, soy nuevo en esta comunidad y necesito ayuda con PHP al cargar imágenes de directorio de forma natural. [No resuelta]

Estoy utilizando un codigo PHP que me devuelve las imagenes de un directorio, pero se ordenan mal. pongo ejemplo del 1 al 15: 1,10,11,12,13,14,15,2,3,4,5,6,7,8,9 y necesito que sea natural: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15.


$dir = ROTcrp . "img/*";
foreach(glob($dir) as $file)
{
$img = explode("/", $file);
$img = $img[2];
}
<div class="boxImg">
<img class='minImg' src='<?php //echo URLcrp . "/img/" . $img; ?>' alt='' />
</div>
Etiquetas: PHP Votos: 0 - Respuestas: 6 - Vistas: 17 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 25-02-2019 11:45:03 no estoy seguro de la estructura de $dir porque no la muestras, en todo caso intenta order al array antes de su recorrido con asort:

    $dir = ROTcrp . "img/*";
    
    asort($dir);
    
    foreach(glob($dir) as $file){
        $img = explode("/", $file);
        $img = $img[2];
    }
    


    esto deberia de ordenar de forma ascendente los elementos de array, en caso contrario muestra la estructura de tu array de salida para ver que hacemos.
      Votos: 2 - Link respuesta
     
  • Fecha: 25-02-2019 15:01:56 Por lo que comentas parece que los nombres de tus fotos no son generados por una cámara sino por ti (las cámaras generan timestamps, o numeraciones de 4 o más cifras). ¿Has probado numerar -o nombrar- las fotos de una manera más 'aceptable' para el ordenamiento (por ejemplo: 0001, 0002, 0003...)?   Votos: 1 - Link respuesta
     
  • Fecha: 26-02-2019 04:59:09 Hola buenas tardes, gracias por vuestras sugerencias.

    * Carlos, he probado asort y me devuelve este error: Warning: asort() expects parameter 1 to be array, string given in ...

    * Juan, efectivamente estoy numerando yo las imágenes y es buena idea ponerles un prefijo de 000, pero esto limitaría el problema a 9999 imágenes, ¿existe alguna forma de que el numero de imágenes sea ilimitado?
    También es buena idea guardarlas con timestamp, pero me gustaría si se puede, ponerles un nombre numérico ordenado de forma natural.

    Un saludo.
      Votos: 0 - Link respuesta
     
  • Fecha: 26-02-2019 05:24:48 No es necesario un prefijo ya que php va a omitir esos ceros iniciales a menos que el prefijo sea alfanumerido algo como IMG-0001.png, por otro lado, el asort te esta dando ese error porque el resultado en $dir no es un array si no más bien un String, muestra por aquí, la estructura de salida de $dir y partimos de allí.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 22-04-2019 12:54:05
    <?php
        $directory="img";
        $dirint = dir($directory);
        while (($archivo = $dirint->read()) !== false)
        {
            if (eregi("gif", $archivo) || eregi("jpg", $archivo) || eregi("png", $archivo)){
                echo '<img src="'.$directory."/".$archivo.'">'."\n";
            }
        }
        $dirint->close();
    ?>
    
      Votos: 0 - Link respuesta
     
  • Fecha: 22-04-2019 12:55:24
    
    /**
     * Funcion que muestra la estructura de carpetas a partir de la ruta dada.
     */
    function obtener_estructura_directorios($ruta){
        // Se comprueba que realmente sea la ruta de un directorio
        if (is_dir($ruta)){
            // Abre un gestor de directorios para la ruta indicada
            $gestor = opendir($ruta);
            echo "<ul>";
    
            // Recorre todos los elementos del directorio
            while (($archivo = readdir($gestor)) !== false)  {
                    
                $ruta_completa = $ruta . "/" . $archivo;
    
                // Se muestran todos los archivos y carpetas excepto "." y ".."
                if ($archivo != "." && $archivo != "..") {
                    // Si es un directorio se recorre recursivamente
                    if (is_dir($ruta_completa)) {
                        echo "<li>" . $archivo . "</li>";
                        obtener_estructura_directorios($ruta_completa);
                    } else {
                        echo "<li>" . $archivo . "</li>";
                    }
                }
            }
            
            // Cierra el gestor de directorios
            closedir($gestor);
            echo "</ul>";
        } else {
            echo "No es una ruta de directorio valida<br/>";
        }
    }
    
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com