Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de busca por palavra


Under

Pergunta

Olá

alguém pode me ajudar com um sistema de busca ?

Como deve ficar o WHERE para o sistema de busca, buscar por cada palavra digitada não pela frase

tipo tenho uma tabela de alunos

e la tem os registros com nome

Rogério Silva Junior

ai quando buscarem no campo de busca por rogério junior

apareça o resultado, por que só da resultado quando digito rogério silva ou rogério silva junior

alguém sabe?

o where ta

SELECT * FROM alunos WHERE nome LIKE '%" .$busca. "%'

Mais já tinha perguntado a outras pessoas e ela disseram que tinha que explodir a palavra e depois montar um loop para depois aparecer os resultado, alguém poe dizer como ficaria?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Under

Numa lógica rápida é mais ou menos pelo que você viu mesmo: quebrar a string e ir pesquisando.

Porém, a questão é: como fazer a pesquisa?

Digamos que você tem um nome "João da Silva"

Se o usuário digitar "joao silva" você poderia montar uma query buscando pelas duas palavras exclusivamente:

SELECT nome FROM colaboradores WHERE UPPER(nome) LIKE '%joao%' AND UPPER(nome) LIKE '%silva%'

Nesse caso funcionaria corretamente, porém você precisa tomar cuidado com caracteres acentuados, que podem ser um grande problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Under,

Fiz um exemplo para você. Você pode refinar o código para realizar outros tipos de comparação, por exemplo: OR.

$q = 'Rogério Silva Junior';

$prefixArg = ' NOME LIKE \'%';


$strArgs = $prefixArg . implode('%\' AND ' . $prefixArg , explode(' ',$q)) . '%\'';

echo 'SELECT nome FROM colaboradores WHERE' . $strArgs;
Será impresso:
SELECT nome FROM colaboradores WHERE NOME LIKE '%Rogério%' AND NOME LIKE '%Silva%' AND NOME LIKE '%Junior%'

Link para o comentário
Compartilhar em outros sites

  • 0
Full text search é uma solução. Com ela você não precisa "quebrar" strings.

Um abraço.

Realmente Willian, caso ele possuir acesso para executar comandos DDL, ele poderá adicionar um índice FULLTEXT. Ai fica mais fácil!

Se eu não me engano, somente a partir da versão 3 do MySQL essa feature está disponível e este índice somente pode ser atribuído para tabelas do tipo MyISAM.

Particularmente eu não gosto de trabalhar com MyISAM. Trabalho com InnoDB por permitir integridade referencial e suporte a transações.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...