-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 (~1 ano atrás)

Básico, porém muito bom!
22/03/2013 4:06pm (~3 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 (~6 anos atrás)

gostei, simples e eficiente! parabéns!
17/06/2010 7:17pm (~6 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 (~6 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 (~7 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 (~7 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 (~7 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 (~7 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 (~7 anos atrás)

Novo Comentário:

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