Ir ao conteúdo
  • Cadastre-se

PHP - sistema de busca


Posts recomendados

Boa tarde!

 

Estou montando um sistema de busca PHP e até então está da seguinte forma:

<?php $busca = $_POST["busca"];$procura = "+" . $busca;	$procura_textos = mysqli_query($conecta, "SELECT * FROM conteudo WHERE MATCH(titulo,texto) AGAINST('" . $busca . "' IN BOOLEAN MODE)");	while($textos = mysqli_fetch_object($procura_textos)) {echo '<div class="textos">';echo '<div class="cadaTexto"><div class="titulo-textos"><a href="textosC.php?id='.$textos->id.'">'.$textos->titulo.'</a></div>';echo (limitarTexto('<div class="texto"><pre>'.$textos->texto.'</pre></div>', $limite = 450));echo '<a class="linkTextoCompleto" href="textosC.php?id='.$textos->id.'">'.'Clique para ler +'.'</a></div></div>';		echo '<div class="clear">'.'</div>';}?>


Tenho um banco de dados que serve a três páginas, que são elas: DICIONARIO, TEXTOS E PONTOS.
O banco tem a seguinte estrutura:
ID - id de cada POSTAGEM
ID_CATEGORIA - QUE SERÁ DICIONARIO, TEXTOS OU PONTOS
ID_DICIONARIO - SERVE PARA O MENU
ID_PONTOS - SERVE PARA O MENU
TITULO - ...
TEXTO ..
AUTOR ..
VISUALIZAÇÕES ..
DATA ..
PLAY - CARREGA VIDEO DO YOUTUBE
DOWNLOAD - LINK PARA O DOWNLOAD DA MUSICA

 

A listagem com ó codigo PHP lá de cima acontece e lista todos os itens procurados, mas eu gostaria de impor condições, por exemplo:

 

Quando eu pesquisar 'forum', provavelmente ele estará na página TEXTOS ou na página DICIONARIO e dificilmente na página PONTOS, ou seja, não será preciso carregar o CAMPO PLAY e nem o campo DOWNLOAD.
Caso eu procure um trecho de uma música, a estrutura para cada post deve seguir o mesmo que a página PONTOS segue, que é carregar o download, o play..

 

No código a estrutura é sempre a mesma, e isso complica..

 

Como agir?
desde já, agradeço!

 


É assim que cada post está aparecendo com a estrutura atual:

echo '<div class="textos">';echo '<div class="cadaTexto">';echo 'A categoria é '.'<b style="color:red">'.$textos->id_categoria.'</b>';echo '<div class="titulo-textos"><a href="textosC.php?id='.$textos->id.'">'.$textos->titulo.'</a></div>';echo (limitarTexto('<div class="texto"><pre>'.$textos->texto.'</pre></div>', $limite = 300));echo '<a class="linkTextoCompleto" href="textosC.php?id='.$textos->id.'">'.'Clique para ler +'.'</a></div></div>';		echo '<div class="clear">'.'</div>';}


1xIAgT6.png
Sendo que os posts de música devem aparecer com uma formatação diferente, que no caso seria:

echo '<div class="pontos"><div class="titulo-pontos">'.$row['titulo'].'</div>';echo '<div class="Flexible-container-pontos">'.$row['play'].'</div>';	echo '<div class="ponto-pontos"><pre>'.$row['texto'].'</pre></div>';echo '<a href="'.$row['download'].'" target="_blank">Download<label class="icon-download"></label></a></div>';echo '<div class="clear">'.'</div>';}


Ficando da seguinte forma:
1zxxiqE.png

 

@dif , pode ajudar-me?

Link para o comentário
Compartilhar em outros sites

@FabianoS

E por onde eu posso começar? Se for preciso eu altero minhas colunas, até porque não tenho conteúdo no site, só estou estruturando..

 

Com base na estrutura atual da tabela, me indicaram a fazer condições, uma espécie de filtro da seguinte forma:

if($condicao == 1){    $sql = "SELECT coluna1, coluna3, coluna5 FROM tabela;";}else if($condicao == 2){    $sql = "SELECT coluna1, coluna2, coluna10 FROM tabela;";}... else if($condicao == N)    $sql = "SELECT colunax FROM tabela;";}else{    //cria uma consulta padrão, que pode ser a geral por exemplo    $sql = "SELECT * FROM tabela;";} $procura_textos = mysqli_query($conecta,$sql); while...

E mesmo depois do codigo acima eu continuei confuso..

Acha melhor fazer da forma que você mencionou ou essa acima?

Link para o comentário
Compartilhar em outros sites

Eu armazeno tudo na mesma tabela, pois antes tinha três tabelas e deu um trabalho pra chamar os posts de cada.

Com tudo armazenado na mesma tabela, eu uso o id_categoria pra separar os conteúdos..

Acha melhor recriar a tabela e as chamadas php?

Estou completamente perdido rs

Não assim e melhor, 

 

Você pode fazer assim , se o retorno do Loop for igual a categoria ele retorna um estilo se nao não.

 

eu usei o else if por que se a primeira achar algo a segunda e a terceira nao vai mostrar nada mesmo se achar alguma coisa no banco.

$buscar = "ceu";$consulta = mysqli_query($conexao,"SELECT * FROM help WHERE texto LIKE '%$buscar%'") or die(mysql_error());while($retorno = mysqli_fetch_object($consulta)):$categoria2 = $retorno->categoria;if($categoria2 == 'ponto'){	echo"MOSTRE ESTILO 1";}if($categoria2 == 'texto'){	echo"MOSTRE ESTILO 2";}if($categoria2 == 'dicionaio'){	echo"MOSTRE ESTILO 3";}endwhile;

Obs.: Estou no Trabalho rs , estou indo almoçar qualquer duvida respondo dps.

Link para o comentário
Compartilhar em outros sites

@FabianoS

Eu irei testar o sistema.

Obrigado mais uma vez!

 

Mas vamos imaginar uma situação: Se eu pesquisar "php" e algo for encontrado no DICIONARIO e também nos TEXTOS, só será exibido um resultado pra tal?

 

"Eu usei o else if por que se a primeira achar algo a segunda e a terceira nao vai mostrar nada mesmo se achar alguma coisa no banco."

 

Eu imagino uma situação aonde se encontrar em DICIONARIO e TEXTOS seja apresentados os dois resultados, mas cada um com seu respectivo formato.. É possivel?

Link para o comentário
Compartilhar em outros sites

Então se houverem dois ou mais resultados com o termo digitado, só será exibido o primeiro?

Porque  o tema dos conteúdos desse site, por mais que sejam divididos em três paginas, será único..

Não, ira exibir todos os resultado achado. por exemplo

 

Se achou 2 resultados com a categoria pontos e 1 com a categoria dicionario mostrara 3 resultados só que com o estilo que você fizer.

 

Por exemplo pontos com cor vermelha e dicionario com a cor azul.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!