Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giihh

Imprimir todas imagens de outra tabela sem repetir o titulo

Recommended Posts

Olá,

Eu tenho as duas tabelas abaixo

tabela IMAGENS

id_imagens  | diretorio_imagem | post_id
       1        imagem1.jpg          1
       2        imagem2.jpg          1
       3        imagem3.jpg          1
       4        imagem4.jpg          1
       5        imagem5.jpg          2
       6        imagem6.jpg          2
       7        imagem7.jpg          2
       8        imagem8.jpg          2

Tabela POSTS

id_post   |          slug             |   titulo     
 1              titulo_do_post           Titulo do Post 
 2              titulo_do_post_2         Titulo do Post 2

PHP:

$slug = $_GET['slug'];
$stmt = $db->prepare("SELECT * FROM posts, imagens
WHERE posts.id_post = imagens.post_id
AND slug=:slug");
$stmt->execute(array(":slug"=>$_GET['slug']));
     while($row=$stmt->fetch(PDO::FETCH_BOTH))
{
?> 

<h1><?php print utf8_encode($row['titulo']);?></h1>

<img src="<?php print ($row['diretorio_imagem']); ?>"> 


<?php
}
?>

Acessando a página "Titulo do post 2" imprime:

Titulo do post 2
imagem5.jpg

Titulo do post 2
imagem6.jpg

Titulo do post 2
imagem7.jpg

Titulo do post 2
imagem8.jpg

Como ter o resultado:

Titulo do post 2
imagem5.jpg
imagem6.jpg
imagem7.jpg
imagem8.jpg

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Básico de lógica, faça uma verificação com um if se uma determinada variável existe, essa variável deverá ser criada dentro do if, como você só quer imprimir uma vez, na primeira volta a variável não existirá, entrará no if e então será impresso título apenas uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada @ESerra mas dentro do while tem outras tags html por exemplo propaganda ela também estão sendo replicadas conforme a quantidade de imagens que estão relacionadas ao post

Compartilhar este post


Link para o post
Compartilhar em outros sites


$slug = $_GET['slug'];

$stmt = $db->prepare("SELECT * FROM posts, imagens

WHERE posts.id_post = imagens.post_id

AND slug=:slug");

$stmt->execute(array(":slug"=>$_GET['slug']));

while($row=$stmt->fetch(PDO::FETCH_BOTH))

{

 

if(!isset($nao_sei_pq_perco_tempo_tentando_explicar)){

$nao_sei_pq_perco_tempo_tentando_explicar = 'ok';

?>

 

<h1><?php print utf8_encode($row['titulo']);?></h1>

 

<?php

}

<img src="<?php print ($row['diretorio_imagem']); ?>">

 

 

<?php

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O resultado foi o que eu previa e comentei no post anterior, para o titulo funciona, para as demais tags html que estiverem dentro do while todas estão sendo repetidas. Provavelmente tem alternativa para não ser necessario criar varios issets.

 

Como faço para na instrução SQL inserir o group by para as imagens? E fazer o foreach das imagens do group by dentro do while?

"SELECT * FROM posts, imagens
WHERE posts.id_post = imagens.post_id
AND slug=:slug"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você agrupar, terá que agrupar pela post_id, neste caso vai retornar apenas 1 imagem. Dai sobram duas alternativas, usar os ifs ou fazer a query das imagens separada dos dados do post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar uma variável para cada tag que queira exibir apenas uma vez, e mandar exibir as variáveis, ao invés de exibir diretamente dentro do loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.