Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS

Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Consulta com duas palavras usando o LIKE MySQL

22-05-2011 20:48

Para usar o LIKE com duas palavras ou mais buscando em colunas diferentes devemos fazer assim:

SELECT * FROM tabela WHERE essacoluna LIKE 'valor%' AND essaoutracoluna LIKE 'esseoutrovalor%'

Logicamente valor e esseoutrovalor irá vir do GET ou POST de acordo com seu sistema.

Mas quando fazemos uma consulta MySQL usando o LIKE, pode ocorrer o problema de que quando procuramos uma única palavra em uma frase, dependendo da posição da palavra na frase a consulta não é realizada corretamente.

Para solucionar o problema, achei uma forma usando o REGEXP, explode e implode.

Funciona da seguinte forma

Quando a pessoa digitar um valor, ele pode vir com espaço ou não, então, o valor é explodido pelo espaço, e em seguida é implodido pelo |

O | é necessário para o uso do REGEXP, ele simboliza o OR "ou", ou seja, vai busca entre os valores separados pelo |

Segue o exemplo

$valor = "nome aqui"; // poderia via por GET ou POST
$exp = explode(" ", $valor); // separando pelo espaço
$imp = implode("|", $exp); // unindo os valores pelo |

$query=mysql_query("SELECT colunas FROM minhatabela WHERE essacoluna REGEXP '($imp)'"); 

0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Consulta com duas palavras usando o LIKE MySQL

22-05-2011 22:52

O exemplo acima procura nas linhas do banco de dados registros que possuam uma ou outra palavra buscada.

Se você precisa buscar registros que contenham exatamente as duas linhas buscadas, deve usar o seguinte:

// Use essa linha para o implode $p2 = implode("%", $p1); 

E ao invés do REGEXP iremos usar o LIKE, da seguinte forma:

.. WHERE essacoluna LIKE '%$p2%'
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Primeiras postagens
Primeiras postagens
Mensagens: 1
Sexo: Masculino

Consulta com duas palavras usando o LIKE MySQL

01-11-2012 22:16

E como funciona se eu quizer usar mais de duas palavras?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17235
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Consulta com duas palavras usando o LIKE MySQL

02-11-2012 09:02

O número de palavras usada é relativo, ou seja, você pode usar quantas palavras desejar, separando elas por espaço. O script se encarrega de juntar para usar na consulta.
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado