Sistema de busca interna com PHP/MySQL
Olá pessoal, hoje vamos aprender a fazer um sistema de busca interna simples. Ou seja, vamos buscar em nosso banco de dados informações relativas a uma palavra e apresentar os resultados ao usuário.
1. Banco de dados
Como exemplo, vamos utilizar uma tabela de produtos:
[sourcecode language=”sql”]
CREATE TABLE IF NOT EXISTS `produtos` (
`cod` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(50) NOT NULL,
`valor` double NOT NULL,
PRIMARY KEY (`cod`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `produtos` (`cod`, `nome`, `valor`) VALUES
(1, ‘Processador INTEL’, 200.00),
(2, ‘Processador AMD’, 150.00),
(3, ‘Placa-mãe ASUS’, 250.00),
(4, ‘Placa-mãe GIGABYTE’, 180.00),
(5, ‘Placa de vídeo GE-FORCE’, 300.00);
[/sourcecode]
2. Busca com PHP
Agora iremos criar nosso formulário de busca:
[sourcecode language=”php”]
<form name="frmBusca" method="post" action="<?php echo $_SERVER[‘PHP_SELF’] ?>?a=buscar" >
<input type="text" name="palavra" />
<input type="submit" value="Buscar" />
</form>
[/sourcecode]
Quando clicado em Buscar, nossa action apontará para o próprio arquivo ($_SERVER[‘PHP_SELF’]), porém enviando através do método GET a ação a = buscar;
Ou seja, agora nós devemos verificar a ação a ser executada e realizar a busca. Claro que você poderia ter feito outro arquivo, mais como nosso exemplo aqui é simples, vamos apenas utilizar um arquivo. Agora vamos ao nosso código PHP:
[sourcecode language=”php”]
<?php
Conexão com o banco de dados
$conn = @mysql_connect("localhost", "usuario", "senha") or die("Não foi possível a conexão com o Banco");
Selecionando banco
$db = @mysql_select_db("produtos", $conn) or die("Não foi possível selecionar o Banco");
Recuperamos a ação enviada pelo formulário
$a = $_GET[‘a’];
Verificamos se a ação é de busca
if ($a == "buscar") {
Pegamos a palavra
$palavra = trim($_POST[‘palavra’]);
Verificamos no banco de dados produtos equivalente a palavra digitada
$sql = mysql_query("SELECT * FROM produtos WHERE nome LIKE ‘%".$palavra."%’ ORDER BY nome");
Descobrimos o total de registros encontrados
$numRegistros = mysql_num_rows($sql);
Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
Exibe os produtos e seus respectivos preços
while ($produto = mysql_fetch_object($sql)) {
echo $produto->nome . " (R$ ".$produto->valor.") <br />";
}
Se não houver registros
} else {
echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
}
}
?>
[/sourcecode]
Bom é apenas isso, acho que nem preciso complementar, pois o código está todo comentado. Nosso código final fica da seguinte maneira:
[sourcecode language=”php”]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sistema de busca interna com PHP/MySQL</title>
</head>
<body>
<form name="frmBusca" method="post" action="<?php echo $_SERVER[‘PHP_SELF’] ?>?a=buscar" >
<input type="text" name="palavra" />
<input type="submit" value="Buscar" />
</form>
<?php
// Conexão com o banco de dados
$conn = @mysql_connect("localhost", "usuario", "senha") or die("Não foi possível a conexão com o Banco");
// Selecionando banco
$db = @mysql_select_db("produtos", $conn) or die("Não foi possível selecionar o Banco");
// Recuperamos a ação enviada pelo formulário
$a = $_GET[‘a’];
// Verificamos se a ação é de busca
if ($a == "buscar") {
// Pegamos a palavra
$palavra = trim($_POST[‘palavra’]);
// Verificamos no banco de dados produtos equivalente a palavra digitada
$sql = mysql_query("SELECT * FROM produtos WHERE nome LIKE ‘%".$palavra."%’ ORDER BY nome");
// Descobrimos o total de registros encontrados
$numRegistros = mysql_num_rows($sql);
// Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
// Exibe os produtos e seus respectivos preços
while ($produto = mysql_fetch_object($sql)) {
echo $produto->nome . " (R$ ".$produto->valor.") <br />";
}
// Se não houver registros
} else {
echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
}
}
?>
</body>
</html>
[/sourcecode]
3. Conclusão
O que eu passei é só a base, agora use sua criatividade para criar seu próprio sistema de busca, até a proxima pessoal!