-2

Sistema de Busca em MySQL

criado por Diego Campos em 30/11/2008 12:25pm
Este artigo exemplifica um sistema bastante simples apenas para você ter uma noção de como fazer uma busca no MySQL, você vai adicionando opções a medida que achar necessário.

Utilizei como exemplo uma tabela chamada usuarios com as colunas id, nome e email.

CREATE TABLE usuarios (
    id integer
unsigned not null auto_increment,
    nome varchar
(64) not null,
    email varchar
(128) not null,
    primary key
(id)
);

Vamos criar o arquivo busca.html para colocar o formulário que utilizaremos para realizar a busca:

<html>
<head>
<title>Busca</title>
</head>
<body>

<form method="POST" action="busca.php">
 
<input type="text" name="busca" size="20">
 
<input type="submit" value="Buscar" name="ok">
</form>

</body>
</html>

Agora vamos criar o arquivo busca.php que vai fazer a consulta e retornar os resultados:

<?php
$host
= 'localhost'; // endereço do seu mysql
$user
= 'autopost'; // usuário
$pass
= 'senha_aparece_aqui'; // senha
$con
= mysql_connect($host,$user,$pass); // função de conexão
$db
= 'autopost_apg'; // nome do banco de dados
mysql_select_db
($db,$con) or print mysql_error(); // seleção do banco de dados

$sql
= mysql_query("SELECT * FROM usuarios WHERE nome LIKE '%$busca%' OR email LIKE '%$busca%'");
// query para selecionar todos os campos da tabela usuários se $busca contiver na coluna nome ou na coluna email
// % antes e depois de $busca serve para indicar que $busca por ser apenas parte da palavra ou frase
// $busca é a variável que foi enviada pelo nosso formulário da página anterior
$count
= mysql_num_rows($sql);
// conta quantos registros encontrados com a nossa especificação
if ($count == 0) {
    echo
"Nenhum resultado!";
} else {
   
// senão
   
if ($count == 1) {
        echo
"1 resultado encontrado!";
   
}
   
// se houver um resultado diz que existe um resultado
   
if ($count > 1) {
        echo
"$count resultados encontrados!";
   
}
   
// se houver mais de um resultado diz quantos resultados existem
   
while ($dados = mysql_fetch_array($sql)) {
       
// enquanto houverem resultados...
        echo
"$dados[nome] $dados[email]<br>";
       
// exibir a coluna nome e a coluna email
   
}
}
?>

Acho que agora você já tem uma idéia de como fazer uma busca em um tabela do MySQL. Você pode introduzir opções à medida de suas necessidades, como buscar em mais tabelas ou mais colunas, exibir resultados de forma diferente.

Espero que tenha sido claro o suficiente para o entendimento de todos.

Comentários:

Mostrando 1 - 10 de 20 comentários
Salomão Neto disse:
Inseri este sistema busca com algumas edições e obti resultados bem relevantes.
12/01/2015 7:38am (~10 anos atrás)

Básico, porém muito bom!
22/03/2013 4:06pm (~12 anos atrás)

Antonio disse:
A questao e o seguinte, falta mesmo o seguinte codigo?
$busca=$_POST['busca'];

Se sim onde?

Pois ta funcionando sem ele.

E outra coisa, esse codigo e seguro, ou tem falhas de segurança? Se sim como resolver?

http://tectonny.com
27/06/2010 9:39pm (~14 anos atrás)

gostei, simples e eficiente! parabéns!
17/06/2010 7:17pm (~15 anos atrás)

miro baia disse:
bom dia, muito bom,sou novo em php,gostaria de saber aonde ele vai buscar o resultado ou entao aonde preencher as palavras q ele vai bsucar.
obr
16/03/2010 12:22pm (~15 anos atrás)

Thiago disse:
Muito bom...

Era exatamento isso que eu procurava... estou adaptando-a agora a minhas necessidades.

Grande Abraço!

11/10/2009 12:39am (~15 anos atrás)

Edivaldo disse:
Boa tarde, eu já tenho um sistema de busca, mas gostaria de saber como fazer um, igual ao do CADÊ que tem as opções de; no mesmo formulário; buscar: Na web, No meu site, No shopping

Tudo isso sem alterar o que o usuário digitou no campo do form.

Alguém poderia me ajudar???
26/05/2009 1:03pm (~16 anos atrás)

João K. disse:
Pesquisei e achei um estudo brasileiro para construir um soundex em português-br. Está na seção scripts soundexbr
02/05/2009 11:11pm (~16 anos atrás)

observei que ficou faltando uma tag
$busca=$_POST['busca'];
em busca.php
mas o artigo e excelente
30/03/2009 5:58am (~16 anos atrás)

angelo rigo disse:
Tem provedores onde ao inserir um termo com acento na busca de um site exibem uma mensagem de erro do Apache Not Acceptable e mostram a querystring com caracteres especiais no lugar dos acentos.

Como se pode evitar esta mensagem de erro ?
19/03/2009 5:07am (~16 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)