Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
procurei em varios lugares por dicas, mas não consegui resolver ainda.
tenho varias tabelas, por exemplo:
Tabela1: campos Titulo, Conteudo, Sessao
Tabela2: campos Titulo, Descricao
Tabela3: campos Nome, Descricao
Aí to precisando fazer uma busca que consulte todos esses campos, procurando se a palavra chave do usuário existe em algum desses itens.
2 perguntas:
1. como fazer essa query? (sou meio novato...)
2. feita a query, como navego no fetch_array? Por exemplo, se eu falar que $titulo = $resultado['Titulo'], vai dar pau com a Tabela 3....
Alguém poderia me indicar uma direção?
Vadio, vou tentar montar o SELECT como você explicou, mas quanto ao retorno da busca, se eu fosse fazer da maneira como você exemplificou na variavel $msg, tudo bem, o problema é que preciso fazer essa busca retornar mais ou menos parecido com o google, ou seja, com o Tilulo em destaque seguido por um trecho do texto onde a palavra-chave aparece. Isso eu fiz e o codigo está aqui embaixo, mas não tenho como fazer isso, se uma hora o titulo vem de um campo da tablea chamado Titulo e outra hora o campo chama Nome...manja?!
$encontrados = "<div id='meio'>
<h1>Resultado da Busca por \"$termo\"</h1>
<p></p>";
$exec_busca = mysql_query($sql,$cn) or die(mysql_error());
$tt_query = mysql_num_rows($exec_busca);
if($tt_query >0){
while($resultado=mysql_fetch_array($exec_busca)){
$titulo = $resultado["Titulo"];
$sessao = $resultado["Sessao"];
$trecho = strip_tags($resultado["Conteudo"]);
$arr_trecho = explode($termo, $trecho);
if(strlen($arr_trecho[0])<30){
$pre = "";
$antes = strlen($arr_trecho[0]);
}else{
$pre = "...";
$antes = 30;
}
if(strlen($arr_trecho[1])<30){
$pos = "";
$depois = strlen($arr_trecho[1]);
}else{
$pos = "...";
$depois = 30;
}
$trecho = $pre . substr($arr_trecho[0], -1*($antes)) . "<span style='background:#FFFF00; font-weight:bold;'>$termo</span>" . substr($arr_trecho[1], 0, $depois) . $pos;
$encontrados .= "<a href='?s=$sessao' class='tit_azul' >$titulo</a><br />
<span class='margin-left:30px;'>$trecho</span><br /><br />";
}
Veja se consegue perceber o lance que eu disse, senão valew a força mesmo assim pela dica na query!>
procurei em varios lugares por dicas, mas não consegui resolver ainda.
tenho varias tabelas, por exemplo:
Tabela1: campos Titulo, Conteudo, Sessao
Tabela2: campos Titulo, Descricao
Tabela3: campos Nome, Descricao
Aí to precisando fazer uma busca que consulte todos esses campos, procurando se a palavra chave do usuário existe em algum desses itens.
2 perguntas:
1. como fazer essa query? (sou meio novato...)
2. feita a query, como navego no fetch_array? Por exemplo, se eu falar que $titulo = $resultado['Titulo'], vai dar pau com a Tabela 3....
Alguém poderia me indicar uma direção?
1.
SELECT
ID_PALAVRA_CHAVE, CAMPOS, TITULO, CONTEUDO, SESSAO
FROM tabela1
INNER JOIN tabela2
ON tabela1.Titulo = tabela2.Titulo
INNER JOIN tabela3
ON tabela2.Descricao = tabela3.Descricao
WHERE ID_PALAVRA_CHAVE = '$palavra_chave'
Estude sobre inner join, basicamente eu estou cruzando as chaves primarias e só irei obter resposta se o dado estiver nas 3 tabelas. Inner join só mostra resultado quando ocorre condição de verdade entre as tabelas que você cruzou.
2. Você pode printar isto dentro de uma tabela.
<table>
<?
while($line = mysql_fetch_array($variavel){
?>
<tr><td><?print $line["Descricao"]?></td></tr>
<?
}
?>
</table>
você teria q relacionar os campos
por exemplo
SELECT tabela1.nome, tabela2.descricao, tabela1.sessao
FROM tabela1
INNER JOIN tabela 2 on tabela1.codDescricao=tabela2.codigo
ORDER BY tabela1.nome ASC;
para listar os dados
você usa assim
while($linha = mysql_fetch_array($_sql)){
}=Despero ter ajudado =D