PHP - mostrar solo la primera imagen de un Readdir anidado

 
Vista:

mostrar solo la primera imagen de un Readdir anidado

Publicado por Stroldj (2 intervenciones) el 31/12/2020 19:55:04
Hola,
A ver si alguién me puede ayudar a verdonde estoy fallando.

Tengo una DB en Mysql, donde hay la tabla Producs con sus campos (id, name, descripion,...).
Para este proyecto se me ocuriió no usar campos con los links de las imagenes, que se suben a un directorio que se crea con el mismo nombre que el campo name. Así, pensé, no será dificil localizarlas con la ruta correcta, ya que no necesitaba en principio, cogerlas individualmente, siempre planeaba cogerlas en grupo (4)...

Todo funciona estupendamente bien, hasta que se me ocurrió coger una de esas imagenes para poner de pre-muestra en la consulta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$query = "SELECT * FROM products";
$link = conectarse();
$result = mysqli_query($link,$query);
 
while($row =mysqli_fetch_array($result)){
 
    $dir="../../products/".$row['name']."/";
 
            if ($directorio = opendir($dir)){
 
                while (false !== ($archivo = readdir($directorio))) {
                    if ($archivo != "." && $archivo != "..") {
                        $foto= "<img width='150px' src='".$dir.$archivo."'>";
 
 
                    }
 
                }
 
            }
 
    print ("<div ><div class='linia'>".$row['id']."</div> <div class='linia'>".$row['name']."</div><div class='linia'>".$row['description']."</div><div class='linia'>".$row['price']."</div>".$foto."</div>");
}

Bueno, la cosa funciona bastante bien, siempre que me sirva de muestra la ultima foto de cada directorio... Peeeero y si quiero la primera imagen???

he probado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$query = "SELECT * FROM products";
$link = conectarse();
$result = mysqli_query($link,$query);
 
while($row =mysqli_fetch_array($result)){
 
    $dir="../../products/".$row['name']."/";
 
    if ($directorio = opendir($dir)){
 
        while (false !== ($archivo = readdir($directorio))) {
            if ($archivo != "." && $archivo != "..") {
                $foto= "<img width='150px' src='".$dir.$archivo."'>";
                                    print ("<div ><div class='linia'>".$row['id']."</div> <div class='linia'>".$row['name']."</div><div class='linia'>".$row['description']."</div><div class='linia'>".$row['price']."</div>".$foto."</div>");
 
            }
 
        }
 
    }
 
 
}

Y claro, me imprime 1 linea completa por cada imagen..

probé

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$query = "SELECT * FROM products";
$link = conectarse();
$result = mysqli_query($link,$query);
 
while($row =mysqli_fetch_array($result)){
 
    $dir="../../products/".$row['name']."/";
 
    if ($directorio = opendir($dir)){
     $i==1;
        while (false !== ($archivo = readdir($directorio))&&$i<1) {
            if ($archivo != "." && $archivo != "..") {
                $foto= "<img width='150px' src='".$dir.$archivo."'>";
                                    print ("<div ><div class='linia'>".$row['id']."</div> <div class='linia'>".$row['name']."</div><div class='linia'>".$row['description']."</div><div class='linia'>".$row['price']."</div>".$foto."</div>");
                 $i++;
            }
 
        }
 
    }
 
 
}
con el contador $i, pero claro peta, al primer resultado... He probado tambien, haciendo de $foto quesea $foto[]... pero luego no consigo vincular eso al id de cada linea... he sacado los bucles anidados, y yo que se cuantas cosas...

Estoy convencido que es un error en como están anidados los bucles, pero no salgo de ahí...

saludos
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