Post on 06-Jun-2015
description
Sistema de busca interna
Marcelo Oliveira (e-mail) trabalha com Dreamweaver desde 1999, possui a formação Macromedia Dreamweaver Developer e coordena o DWMX.
Olá amigos do iMasters. Vamos, nesse artigo, criar um sistema de busca para um site, utilizando PHP e um banco MySQL. No exemplo criaremos uma busca interna para o site DWMX. Como todos sabem, sou colunista semanal iMasters e mantenho um projeto pessoal no ar que é o DWMX. Esse banco terá palavras chaves correspondentes a artigos publicados, a data de sua publicação, seu número e a URL.
Vamos começar criando nossa tabela (já vimos isso nos artigos anteriores) em nosso banco de dados (htdocs):
CREATE TABLE `tutorial_126` (`ID` tinyint(9) unsigned NOT NULL auto_increment,`numero` tinyint(3) NOT NULL default "0",`data` date NOT NULL default "0000-00-00",`nome` varchar(50) NOT NULL default "",`descricao` text NOT NULL,`url` text NOT NULL,PRIMARY KEY (`ID`)) TYPE=MyISAM AUTO_INCREMENT=3 ;
Agora, com a conexão ao banco de dados estabelecida...
Vamos criar um formulário para inserirmos dados dinamicamente em nossa tabela. Crie um arquivo novo (inserir.php). Pela Barra Application, escolha Record Insertion Form Wizard.
1
No quadro que se abre, configure:
Em "Connection", o nome de seu banco de dados (htdocs). Em "Table", o nome de sua tabela. Determine o nome do arquivo a ser carregado quando a inserção for feita "Afther inseting, go to::" (inserido.php). Nos campos do formulário, altere somente a Coluna ID, alterando-a para Hidden Field (Dispaly as:). Clique em OK e um formulário será criado:
2
Agora vamos inserir alguns registros nessa tabela:
INSERT INTO `tutorial_126` VALUES (1, 7, "2004-07-14", "behaviors", "behaviors comportamentos", "http://www.dwmx.com.br/tutoriais/07_behaviors/index.php");INSERT INTO `tutorial_126` VALUES (2, 25, "2004-08-04", "telnet", "mysql telnet", "http://www.dwmx.com.br/tutoriais/25_mysql_telnet/index.php");INSERT INTO `tutorial_126` VALUES (3, 46, "2004-08-28", "cgi para envio de forms", "cgi formularios", "http://www.dwmx.com.br/tutoriais/46_cgi_forms/index.php");INSERT INTO `tutorial_126` VALUES (4, 89, "2004-10-16", "quiz", "quiz questionario", "http://www.dwmx.com.br/tutoriais/89_quiz/index.php");
Arquivo inserido.php:
Bem, já temos nosso banco, nossa tabela e nosso formulário de inserção de registros para nossa busca interna. Vamos agora criar uma página para realizar a busca e outra aonde mostraremos o resultado dessa busca.
Chamarei a página da busca de busca.htm. Nela criaremos um formulário simples, conforme imagem abaixo:
3
Nesse formulário temos que configurar alguns detalhes. Primeiro, no campo texto devemos definir um nome para o mesmo (busca). Nome esse que será nossa variável.
Agora selecione o formulário...
...Determine seu Method como "GET", pois nossa variável "busca" (nome do campo de texto) será passada por URL e determine em "Action" = busca_resultado.php pois iremos redirecionar o formulário para nossa página com o resultado, a qual daremos o nome de busca_resultado.php.
Não podemos deixar de esquecer do botão "Submit".
Bem, nosso formulário de busca já está pronto. Vamos finalmente criar uma página com o resultado dessa busca (busca-resultado.php).
4
Crie um arquivo PHP novo, lembrando que nossa conexão ao banco já está configurada (vide primeira parte do artigo). Crie um "Recordset Avançado" pelo Painel Bindings conforme imagem a seguir:
Escolha Avançado, e configure da seguinte maneira: Em "nome", escolha = rsBusca_Resultado, e em "Connection" o nome de sua conexão. No meu caso defini na parte 1 do artigo como sendo htdocs (mesmo nome de meu banco). Agora selecione a tabela "tutorial_126" e clique em Select. Note a Instrução SQL sendo criada.
5
Vamos terminar nossa Instrução SQL propriamente dita, para que nosso Recordset realize corretamente a busca. Iremos fazer a busca em dois campos: "nome" e "descrição". Clique na tabela tutorial_126 e selecione "nome" e clique em "WHERE".
Agora criaremos uma variável, clicando...
6
.... E configurando da seguinte maneira:
Note que dei o mesmo nome para variável do campo text-field em nosso arquivo. Como estamos tratando do campo nome, quero que, quando eu digitar qualquer caractere, a busca seja realizada. Então, pelo SQL, usaremos a cláusula LIKE da seguinte maneira:
LIKE "%%busca%%"
Lembrando que desejo também que seja realizada a busca no campo "descrição". Então voltamos na tabela tutorial_126, campo "descrição" e vamos em "WHERE". Só que, note a instrução SQL...
Não quero que procure no campo "nome" e (AND) no campo "descrição". Quero que procure no campo "nome" ou (OR) no campo "descrição". Troque AND por OR.
Insira novamente nossa variável. Terminamos nossa Instrução SQL:
7
Finalizando, vamos criar uma tabela para mostrarmos o resultado de nossa busca. Após criada a tabela, inserimos os campos em suas respectivas colunas...
...E aplicamos o Server Behavior: Repeat Region, selecionando a linha (tag tr) e pelo Painel Server Behavior > Repeat Region. Não se esqueça de escolher "All records".
Bem, terminamos. Vamos agora, pelo navegador, testar nossa busca.
Resultado:
8
Para fazer com que o registro digitado no campo "url" seje um link, vá no arquivo busca_resultado.php e edite a linha 33:
Da seguinte maneira:
O que fiz foi criar um link para o campo. Resultado:
Essa segunda parte do artigo foi praticamente escrita pelo amigo Leandro Vieira. Eu simplesmente adaptei alguns detalhes. Um abraço a todos.
9