Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boas! preciso da vossa ajuda..
Estou a desenvolver um sistema de pesquisa de um portal de noticias, e preciso que ir buscar dados de duas tabelas diferentes conforme as tags escritas na pesquisa:
Tabela 1 - Noticias
Tabela 2 - Programas
(Ambas tabelas têm o campo "TAG" ou "Titulo")
Deixo o código que tenho em que só me aparece os programas:
<?php
$limite = 9;
$SQL_COUNT = mysql_query("SELECT COUNT('id_programa') FROM programas");
$SQL_RESUL = ceil(mysql_result($SQL_COUNT, 0) / $limite) ;
$pg = (isset($_GET["pag"])) ? (int)$_GET["pag"] : 1;
$start = ($pg -1) * $limite;
$termo = $_GET["search"];
$busca = mysql_query ("SELECT * FROM programas WHERE tags_programa LIKE '%$termo%' ORDER BY id_programa DESC LIMIT $start, $limite");
if(mysql_num_rows($busca)){
while($src = mysql_fetch_array($busca)){
?>
<div class="item image-left">
<div class="item-header">
<iframe src="[http://www.youtube.com/embed/](http://www.youtube.com/embed/)<?php echo $src['url']; ?>?rel=0&nsp;theme=light iv_load_policy=3" width="100%" height="200" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
<div class="item-content">
<h3><a href="programa.php?id=<?php echo $src['titulo_programa']; ?>"><?php echo $src['titulo_programa']; ?></a></h3>
<p><?php echo substr($src['conteudo_programa'], 0, 200);?>...</p>
<a href="programa.php?id=<?php echo $src['id_programa']; ?>" class="read-more-link">VER MAIS<i class="fa fa-angle-double-right"></i></a>
</div>
</div>
<?php } } else {?>
<div class="item image-left">
<h3><?php echo "Nenhum artigo encontrado com a palavra ".$termo."...Faça uma nova pesquisa."?></h3>
</div>
<?php }?>
A minha dúvida é como eu posso selecionar e mostrar dados das duas tabelas contendo a mesma TAG.
Dá para juntar duas tabelas distintas com UNION? vou ver
ficaria assim???
$busca = mysql_query ("SELECT FROM programas WHERE tags_programa LIKE '%$termo%' ORDER BY id_programa DESC LIMIT $start, $limite UNION SELECT FROM noticias WHERE tags LIKE '%$termo%' ORDER BY id_noticia DESC LIMIT $start, $limite");
Bom dia. Segue um tópico que tratou do mesmo assunto, como exemplo.
http://forum.imasters.com.br/topic/395491-resolvidoselecionar-de-duas-tabelas/
Experimentei como o exemplo que me referiu e nao funcionou..
algum erro?
$busca = mysql_query ("SELECT FROM programas WHERE tags_programa LIKE '%$termo%' ORDER BY id_programa DESC LIMIT $start, $limite UNION SELECT FROM noticias WHERE tags LIKE '%$termo%' ORDER BY id_noticia DESC LIMIT $start, $limite");
Amba as consultas devem ter o mesmo número de colunas, e as colunas devem ser do mesmo tipo (ex. INT ou VARCHAR).
nao tem o mesmo numero de colunas..mas saõ do mesmo tipo
Oi Dina,
Digamos que eu busque por "caneca" no seu sistema,
a ideia seria mostrar quais campos da tabela programa e quais campos da tabela noticias?
ola... ao pesquisar por caneca, vai buscar todas noticias (titulo, imagem, conteudo ) e programas(titulo, imagem, conteudo) em que o campo "TAGS" têm a palavra Caneca
Veja se esta documentação ajuda.
https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html
Basta fazer o union apenas pelos campos q vc deseja.
Select * from
(select titulo, imagem, conteudo from programas
UNION ALL
select titulo, imagem, conteudo from noticias
)z
where titulo like '%caneca%'
or imagem like '%caneca%'
or conteudo like '%caneca%'Ok está funcionando...como é que faço para mostrar o conteudo das tabelas diferentes no mesmo div...
<div class="item image-left">
<div class="item-header">
<iframe src="[http://www.youtube.com/embed/](http://www.youtube.com/embed/)<?php echo $src['url']; ?>?rel=0&nsp;theme=light iv_load_policy=3" width="100%" height="200" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
<div class="item-content">
<h3><a href="programa.php?id=<?php echo $src['titulo_programa']; ?>"><?php echo $src['titulo_programa']; ?></a></h3>
<p><?php echo substr($src['conteudo_programa'], 0, 200);?>...</p>
<a href="programa.php?id=<?php echo $src['id_programa']; ?>" class="read-more-link">VER MAIS<i class="fa fa-angle-double-right"></i></a>
</div>
</div>
neste caso só mostro o programa...mas também não criar uma nova div por causa do while
Entao, embora eu possa responder aqui, essa sua proxima duvida será melhor tratada no forum adequado.
Estou movendo o topico.
Não entendi sua última dúvida. Explique melhor.
Quero mostrar o conteudo de duas tabelas diferentes..ou seja o php vai chamar campos diferentes...
como eu faço para mostrar os programas e as noticias por ordem DESC naquele código.
<div class="item image-left">
<div class="item-header">
<iframe src="[http://www.youtube.com/embed/](http://www.youtube.com/embed/)<?php echo $src['url']; ?>?rel=0&nsp;theme=light iv_load_policy=3" width="100%" height="200" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
<div class="item-content">
<h3><a href="programa.php?id=<?php echo $src['titulo_programa']; ?>"><?php echo $src['titulo_programa']; ?></a></h3>
<p><?php echo substr($src['conteudo_programa'], 0, 200);?>...</p>
<a href="programa.php?id=<?php echo $src['id_programa']; ?>" class="read-more-link">VER MAIS<i class="fa fa-angle-double-right"></i></a>
</div>
</div>
ESTE CODIGO SÓ MOSTRA OS PROGRAMAS
Pesquise por UNION no MySQL.