PHP - problema con código para mostrar imágenes

   
Vista:

problema con código para mostrar imágenes

Publicado por Nicolás (24 intervenciones) el 25/10/2016 22:13:55
Dentro de una carpeta img tengo una subcarpeta llamada principal con una imagen de información de cada proyecto y tengo varias subcarpetas numeradas con todas las imágenes de cada proyecto. Necesito hacer un código que haga un recorrido por todas las subcarpetas numeradas verificando que alguna tenga más de diez imágenes. Si esta condición se cumple, mostrar todas las imágenes de estas subcarpetas. Adjunto una imagen para que se entienda mejor. Tengo un código pero me indica un error de sintaxis. Agradezco cualquier ayuda que me puedan dar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php
        //creo directorio con imágenes referenciales
        $pathPrincipal = "img/principal/";
 
        //creo directorios con imágenes de cada proyecto
        $path.$i = "img/" . $i . "/";
 
        //creo array con imágenes referenciales
        $arrayPrincipal = Array();
 
        //creo array con imágenes de cada proyecto
        $array.$i = Array();
 
        //hago un recorrido por el directorio principal 
        //guardo las imágenes en el array
        //guardo la longitud del array en una variable
        foreach(glob($pathPrincipal . '*.jpg') as $imageAlbum) {
            $arrayPrincipal[] = $imageAlbum;
            $long = count($arrayPrincipal);
        }
 
        //recorro las carpetas con los proyectos
        for($i = 1; $i <= count($long); $i++):
        foreach(glob($path.$i . '*.jpg') as $image.$i) {
 
            //si alguna carpeta tiene más de 10 imágenes
            if(count($image$i) > 10) {
 
                //muestro las imágenes
                echo '<img src = "' . $image.$i . '">' . "<br>";
            }
        }
        endfor;
        ?>
    <body>
</html>

imagen
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de VRM

problema con código para mostrar imágenes

Publicado por VRM (189 intervenciones) el 26/10/2016 08:56:11
Hola:

- La linea 28 tiene dos puntos al final y el bucle for no tiene cuerpo.
- En esa misma linea se usa la función count con un entero ($long) que se ha creado en la linea 24. Count devuelve un entero luego long es entero.
- La linea 24 debería estar fuera del bucle for. Sería se emsambla la variable $arrayPrincipal y al terminar se cuenta su número. No hay por qué contarlos cada vez que añades uno.
- La linea 29 tiene un nombre de variable incorrecto ($image.$i)
- En la linea 32 el nombre de la variable es incorrecto ($image$i)

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con código para mostrar imágenes

Publicado por Nicolás (24 intervenciones) el 26/10/2016 17:15:01
Hola. Me parece que el bucle for está correcto. Tomé esta documentación para realizarlo:
http://php.net/manual/es/control-structures.alternative-syntax.php
Tienes razón con la función count, no tiene porqué estar dentro del bucle for.
La idea de concatenar dos variables en la línea 29 fue ocupar una variable por defecto de la función glob más un número. No se si está bien declarado. Tal ves hagan faltas comillas. En el fondo, en ves de repetir la función glob cada vez con las carpetas numeradas($image1, $image2, $image3, etc...), hice una concatenación a una variable ($i) que almacena un número que se incrementa cada vez, a través del bucle for, que empieza con for(...): y termina en endfor, tal como aparece en la documentación.
Finalmente, el error que se me indica está en la línea 29:
Parse error: syntax error, unexpected '.', expecting ')' in C:\...\galeria.php on line 29;
debe ser, tal como tu dices, un error en la declaración de la variable; tal ves hubiese que agregar comillas o algo así; en el fondo necesito saber como declarar una variable que se componga de dos términos concatenados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de VRM

problema con código para mostrar imágenes

Publicado por VRM (189 intervenciones) el 26/10/2016 20:04:37
Hola:

Perdón no había visto el endfor de la linea 38. De todas formas yo no usaría una forma alternativa de for con : y enfor; cuando lo normal es usar { }.

Respecto de la linea 29: la función glob tiene como argumento un string con una ruta luego es correcto $path.$i."*.jpg" pero depende lo que tenga $path pero si $i es un número te quedará una cosa como "/loquesea/1*.jpg" si $path = "/loquesea/" y $i=1. Pero seguramente esta no es la ruta que quieres poner.

En cambio en foreach la segunda parte, la que va después de "as" tiene que ser el nombre de una variable válida. Si lo que quieres es que la variable se llame $image1, $image2,... debes hacerlo de otra manera: entre las lineas 28 y 29 coloca:
1
$image = "image".$i
y cambia la linea 29 a:
1
foreach(glob($path.$i . '*.jpg') as $$image) {
$$image hace que si la variable $image sea igual a image1 la variable $$image sea lo mismo que $image1.

Lo mismo en las lineas 32 y 35.

Por otro lado ¿qué probema hay que la variable del ciclo foreach se llame lo mismo en cada iteración del bucle más externo? podría llamarse simplemente $imagen y nos evitamos las complicaciones anteriores.

Respecto de la linea 28 no sé muy bien que dará count($long) siendo $long un entero. Se supone que el argumento de count debe ser un elemento contable (que se pueda contar9 pero en todo caso lo que me parece que quieres poner es el número de elementos de $arrayPrincipal que es $long así que esta line debería ser:
1
2
3
for($i = 1; $i <= $long; $i++) {
     ...
}

En la linea 11 aparece $path.$i que tampoco es un nombre válido de variable, aunque no da error de sintaxis. No entiendo muy bien como lo interpreta si descubro algo te lo comento...

No se si te estoy ayudando. Ya me cuentas como vas.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con código para mostrar imágenes

Publicado por Nicolás (24 intervenciones) el 26/10/2016 21:15:14
Ahora me va quedando más claro, sobretodo con lo de la declaración de la variable image ($image= "image".$i). Yo me doy todas estas vueltas con una sola finalidad: hay un directorio con una carpeta principal y carpetas específicas de cada proyecto. La idea es que el código se actualice sólo cada vez que ingreso una reseña de un proyecto en la carpeta principal y agrego una carpeta con detalles de ese proyecto. Dicho de otro modo, yo agrego una imagen a la carpeta principal y agrego otra carpeta más con imágenes. El resto se hace solo. Entonces por eso tomo esto del bucle for y la concatenación en la variable. Es para no rehacer el código cada vez que se actualiza la información. Voy a tratar de nuevo con estas observaciones. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar