php – Pull several images of the same id on the bd

Question:

I'm having a lot of trouble pulling 4 images of the same id that I have in the database to the front-end.

I managed to insert the images in the database normally, I'm using two different tables.

Below is the first database:

Tabela: produtos
id  nome       descricao             slug
1  produto um  descricao do produto  produto-um

Below is the second:

tabela:produto_imagens
id  produto_id  imagens
1      1        hsaudhuahdsu.jpg
2      1        gsagaasftfsa.jpg
3      1        assdoakdaado.jpg

follow the php code below:

<?php
$url = explode('/',$_GET['url']);
$produto = MySql::run()->prepare("SELECT * FROM `produto` WHERE slug = ?");
$produto->execute(array($url[0]));// código para ver se a url existe.
if($profile->rowCount() == 0){
die("a página não existe!");

}
foreach ($produto as $key => $value) {
$produto->fetchAll();
$imagens = MySql::run()->prepare("SELECT * FROM 
`produto_imagens` WHERE produto_id = $value[id]");
$imagens->execute();

?>
// nao coloquei as tags do php pq se nao o 
//codigo nao aparece para vcs.

<h2>Nome do produto:  echo $value['nome'];<h2>
<h3>Descrição do produto</h3>
<p>echo $value['descricao']; </p>
<?php }?>//fecha foreach"produto".

<?php
foreach ($imagens as $key => $value) {
$imagens = $imagens->fetch()['imagem'];

?>
<img src='echo $imagens'>   
<?php } ?>//fecha foreach $imagens.

So, I can retrieve all the data from the "products" table, and from the "produto_imagens" table, I can only retrieve the first one, and if I replicate the code it returns the same image. Does anyone know how I pull all images of the same id from the products table from the database and show them to the user on the front-end?

Answer:

You are overwriting the images variable.

foreach ($imagens as $key => $value) {
    $imagens = $imagens->fetch()['imagem']; // <====== AQUI
                                            // Já existe a variável $imagens

That's why it's only showing 1 image, because you're always overwriting it with the name of an image, inside foreach.

You are overwriting the images variable.

Another thing I found in your code that I found strange was this part:

<img src='echo $imagens'>   

You are running an echo without PHP tags before.

Corrected code

foreach ($imagens as $key => $value) { ?>
    <img src="<?php echo $value ?>">
<?php }
Scroll to Top