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:
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);
2. Busca com PHP
Agora iremos criar nosso formulário de busca:
<form name="frmBusca" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?a=buscar" > <input type="text" name="palavra" /> <input type="submit" value="Buscar" /> </form>
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:
<?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.""; } } ?>
Bom é apenas isso, acho que nem preciso complementar, pois o código está todo comentado. Nosso código final fica da seguinte maneira:
<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>
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!