Giihh 6 Denunciar post Postado Março 22, 2016 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
ESerra 744 Denunciar post Postado Março 22, 2016 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
Giihh 6 Denunciar post Postado Março 22, 2016 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
ESerra 744 Denunciar post Postado Março 22, 2016 $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
Giihh 6 Denunciar post Postado Março 22, 2016 Nada mal para um moderador impaciente rsrs Obrigada @ESerra vou tentar Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Março 23, 2016 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
ESerra 744 Denunciar post Postado Março 23, 2016 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
DSerma 19 Denunciar post Postado Março 23, 2016 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
Giihh 6 Denunciar post Postado Março 23, 2016 A saída foi usar GROUP_CONCAT, SEPARATOR '|', JOIN, GROUP BY e do php o explode '|'. Compartilhar este post Link para o post Compartilhar em outros sites