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


Moderador: web

 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 19:48

Mais uma vez apanhando aqui... :\

Vamos lá...

Estou fazendo um sistema de busca internet, que busca valores no banco de dados, está funcionando ok, porém quero trabalhar com combinações de palavras, exemplo:

João - Funciona ok.
Maria 1998 - não funciona.

:\

Detalhe Maria está no campo nome e 1998 no campo ano:

Acho que o problema está aqui:

$sql = mysql_query("SELECT * FROM cadastro WHERE nome LIKE '%$search%' or ano LIKE '%$search%' order by ano DESC"); $count = mysql_num_rows($sql); if ($count == 0) { echo "Nenhum resultado!"; } else { if ($count == 1) { echo "1 resultado encontrado!"; } if ($count > 1) { echo "$count resultados encontrados!"; } ?>

É isso ai,

Agradeço desde já.

Marcony. :rock:

MOVIDO: para MySQL
% ADICIONADO NO SCRIPT
0
Editado pela última vez por web em 22-05-2011 19:56, em um total de 3 vezes.
Razão: Título melhorado
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 19:55

Você pode usar as várias formas do LIKE, e ver o que mais se aproxima do resultado esperado.

LIKE '%$valor' ... Terminando com o valor buscado

LIKE '$valor%' ... Iniciando com o valor buscado

LIKE '%$valor%' ... Que tenha o valor buscado em alguma parte

No seu caso, você pode tentar com um LIKE só na query.

Também, evite usar o * no SELECT, selecionando somente as colunas que vai usar, agiliza a consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 20:00

Certo... Ainda não consegui entender muito bem...

No caso quando você diz:

No seu caso, você pode tentar com um LIKE só na query.

Como ficaria? abs... :rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 20:08

Assim

SELECT nome FROM suatabela WHERE nome LIKE '%$valor%'
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 20:19

certo web, desculpe minha :talk:...

mas e quanto a data. Nesse caso busca beleza o nome.

Ex: Maria

Mas quero maria(tupla nome) e 1998(tupla ano)

obrigado, abs.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 20:21

Nesse caso você vai usar 2 LIKES.

SELECT nome, data FROM suatabela WHERE nome LIKE '%$valor%' OR data LIKE '%$valor%'

Será listado todos as linhas em que o nome ou a data sejam igual aos buscados.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 20:25

Certo, devo estar fazendo algo errado então, tipo:

Se eu digitar só maria, retorna o resultado x
Se eu digitar só 1998, retorna tabém o resultado x beleza
Agora se eu digitar Maria 1998 retorna nenhum resultado...

Que será que está errado em?

abs. :rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 20:30

Foi como você disse, um valor está em uma coluna, o outro valor em outra. Nesse caso você procura na mesma coluna.

Agora, se você por exemplo tivesse um campo texto só para o nome, e um select para selecionar o ano, ficaria melhor para fazer a consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 20:34

certo... posso criar uma coluna descrição com todos os dados...

ex:

maria 1998 empresaria legal

seria isso? Testei aqui, porém se eu buscar... maria 1998 ai da certo... só que se eu buscar maria legal não vai...

Seria por ai?

abs.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 20:49

Seria uma boa ideia sim. Fiz alguns testes aqui com REGEXP e deu certo. Postei no link abaixo

Consulta-com-duas-palavras-ao-banco-de- ... _6333.html
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 21:05

Show cara... agora só um detalhe...

Se você tiver dois registros diferentes mas com mesmo ano:

Exemplo:

Maria|1998
João|1998

Se digitar Maria 1998 ele também lista o João.

rsrsrs, quase lá...

abs. :rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 21:11

Mais a ideia dessa query é essa mesma, retornar todas as linhas que tenha parte do valor buscado.

Como "o ano" está contido nas 2 linhas, então retorna os 2 cadastros.

Para ficar mais filtrado que isso só separando os campos de entrada de texto, um para nome e outro para ano.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 21:25

Certo... tentei separar uma coluna para cada campo tb e ele me retorna o valor campo... Queria somente Maria 1998 mesmo João sendo 1998... :geek:

Entedi o que disse...

rsrsr, devo estar errando algo bobo...

abs...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 21:42

Então se tem em uma linha no bd: João foi para casa, e a pessoa buscar por: João casa, tem que retornar essa linha?

Porque o exemplo que indiquei usa o | com ou, uma palavra ou outra buscada.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 21:48

Isso mesmo!

Se tiver:

João foi para casa
Maria foi para casa
Pedro foi para casa

se eu digitar: João casa, ou João foi ele me retornaria só o de João mesmo Maria e pedro tento "foi para casa" na frase.

Seria um casa de AND?

abs... chegando lá... :rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 22:33

Até agora não achei um separador que tem essa função, se achar posto aqui.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 22:43

Voltando a fazer uns testes aqui com o LIKE, vi que se usar o % entre as palavras buscadas, parece chegar onde você precisa.

Seria algo assim: ... LIKE '%maria%casa%'

Com base no link que te indiquei, terá essa alteração

// novo implode
$p2 = implode("%", $p1);

A query ficaria algo desse tipo
$query=mysql_query("SELECT campos FROM suatabela WHERE essecampo LIKE '$p2'");

CORREÇÃO
O valor correto entre ' do LIKE é %$p2%
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

22-05-2011 23:10

certo muito calma nessa hora...

não entendi como o like entrou junto com o implode, pode me mostrar como é no código...

rsrsr...

abs...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

22-05-2011 23:13

Pega o script que indiquei no link. Ai você vai trocar no implode o | por %

Não irá mais usar o REGEXP, irá usar o LIKE somente, como indiquei acima.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 64
Sexo: Masculino

Como criar um sistema de busca interna MySQL

24-05-2011 18:19

Fala jovem! Funcionou 100%, desculpe a demora da resposta, aquele dia ia responder que deu certo mas o Fórum entrou em uma rápida manutenção. É isso ai! Como sempre me ajudou muito. abs cara. :rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como criar um sistema de busca interna MySQL

24-05-2011 18:21

Boa.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

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