Ir ao conteúdo
  • Cadastre-se
thiagosvl

PHP - sistema de busca

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@thiagosvl cara eu faria da seguinte forma faria três consultas no banco de dados pela categoria e retorna o loop de acordo com o estilo da postagem, mas já que você criou uma coluna "ID_CATEGORIA" para os três, fica mais complicado, pode usar filtros também.

Compartilhar este post


Link para o post
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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@thiagosvl desculpe, estava sem internet rs... sobre o questão, essa pagina pontos . onde entra no banco de dados ? seria só o "ID_PONTOS" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas Thiago você armazena o tipo de categoria, a pagina pontos você armazena aonde ?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@thiagosvl Não mostrara todos os resultados encontrados. como eu sei ele dentro do loop ele achara o resultado e se for de tal categoria vai mostrar e depois vai continuar executando o loop.

Compartilhar este post


Link para o post
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..

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×