sexta-feira, 21 de novembro de 2014

Mural de recados com ASP clássico e SQL Server



Atualmente, com o sucesso das “redes sociais”, um mural de recados (ou livro de visitas) é o tipo de página que não pode faltar em seu site, vamos ver como criar um bem simples.
Requisitos importantes: Este tutorial pressupõe que o SQL Server foi instalado no “mixed mode”, ou seja, com login e senha. Normalmente, nestes casos, o login é o usuário “sa”. Também deverá ter sido habilitado o protocolo TCP/IP para acesso ao SQL Server e concedidos diretos de leitura e gravação na pasta onde estará armazenado o banco de dados.

quarta-feira, 19 de novembro de 2014

Pesquisa avançada em ASP clássico Com MS Access



I – Configurando o banco de dados

Neste tutorial, vamos criar uma página de consultas avançadas por vários critérios com o tema “futebol”, onde poderemos fazer buscas pelo jogador ou time ou posição que coincidam com parte de uma palavra.

1. O primeiro passo é criar 3 tabelas: tbjogador (id_jogad, nome_jogad, clube, posicao), tbclubes (id_clube, nome_clube), tbpos (id_pos, pos). Neste tuto, para facilitar, usaremos apenas as posições: goleiro (id 1), lateral (id 2), meio de campo (id 3) e atacante (4). Os campos com “id” seguido por sublinhado (“id_*”) serão chaves primárias; na tabela tbjogador, as colunas “clube” e “posicao” deverão ser do tipo número; as demais são do tipo texto. Insira alguns registros.

2. O próximo passo é criar os relacionamentos (no Access 2007, Ferramentas de bancos de dados – Relações). Adicione as 3 tabelas, arraste o id do clube p/ a coluna “id_clube” da tabela “jogador” e, a seguir, arraste id_pos da tbpos para a coluna posicao da tabela jogador; confirme em “Criar”.

3. Vamos fazer agora duas consultas no Access mesmo p/ confirmar se os relacionamentos estão ok. Abra 1 nova consulta (Criar – Design da consulta) e adicione as 3 tabelas, alterne para o modo SQL (botão direito sobre a aba “Consulta 1”) e veja que já está pronto um “esqueleto” de uma consulta juntando as três tabelas. Nesta 1ª consulta, vamos relacionar os jogadores do time 1 que sejam goleiros (posição “1”); para isso, a consulta que estará assim:

SELECT
FROM tbpos INNER JOIN (tbclubes INNER JOIN tbjogador ON tbclubes.id_clube = tbjogador.clube) ON tbpos.id_pos = tbjogador.posicao;

Deixe assim:
SELECT *
FROM tbpos INNER JOIN (tbclubes INNER JOIN tbjogador ON tbclubes.id_clube = tbjogador.clube) ON tbpos.id_pos = tbjogador.posicao where id_pos=1;

4. Execute e retorne para o modo SQL. Salve a consulta, se quiser, ou teste outras posições. A seguir, vamos relacionar os jogadores de um time determinado; também é muito simples; troque a consulta acima pela seguinte:

SELECT *
FROM tbpos INNER JOIN (tbclubes INNER JOIN tbjogador ON tbclubes.id_clube = tbjogador.clube) ON tbpos.id_pos = tbjogador.posicao where id_clube=3;

Novamente, se desejar, alterne o id do clube à vontade.

II - Consultas com “like”

5. Agora, como dito antes, nossa página não fará essas consultas por termos exatos; e sim faremos a busca por parte de palavras. Caso queira testar esse tipo de consulta no Access, crie uma nova consulta, adicione as tabelas como explicado acima e teste essa instrução:

SELECT tbjogador.nome_jogad, *
FROM tbclubes INNER JOIN (tbpos INNER JOIN tbjogador ON tbpos.id_pos = tbjogador.posicao) ON tbclubes.id_clube = tbjogador.clube
WHERE (((tbjogador.nome_jogad) Like "*XXX*"));

6. Substitua os três “X” acima por parte de uma palavra (pode ser uma letra, duas, três..) caso exista algum nome de jogador com a(s) letra(s) indicada(s), a consulta retornará corretamente. Caso deseje, substitua o critério pelo nome de um clube ou pela posição. Outro exemplo: caso queira consultar quais jogadores são “goleiro”, construa a consulta assim:

SELECT tbpos.pos, *
FROM tbclubes INNER JOIN (tbpos INNER JOIN tbjogador ON tbpos.id_pos = tbjogador.posicao) ON tbclubes.id_clube = tbjogador.clube
WHERE (((tbpos.pos) Like "*g*"));

III - A página ASP

7. Crie uma nova pg ASP; na 1ª linha, insira esse comando:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

8. A seguir, um formulário simples em HTML:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>BuscaFutebol teste</title>
</head>
<body>
<p>Pesquise por parte do nome do jogador, do clube ou posição:</p>
<form name="form1" method="post" action="">
  <label>Nome:
  <input type="text" name="cxpalavra">
  </label>
   <select name="combocriterio">
        <option value="nome_jogad">Jogador</option>
        <option value="nome_clube">Clube</option>
        <option value="pos">Posição</option>
  </select>
<br />
<br />
<label>
<input type="submit" name="Submit" value="pesquisar">
</label>
</form>


9. Agora os comandos em ASP para capturar as palavras do formulário:

   1. <%
   2. dim palavra, criterio
   3. palavra=request.form("cxpalavra")
   4. criterio=request.form("combocriterio")
   5. response.write palavra&" - "
   6. response.write criterio&"<br />"
   7. %>


10. Feche o código HTML:

</body>
</html>

11. Teste essa página no navegador. Caso tudo esteja ok você verá que os termos digitados na caixa de busca e no menu “select” serão exibidos. Caso prefira, pode comentar ou apagar as linhas 5 e 6, acima (as que começam com “response.write”).

12. Agora vamos estabelecer uma conexão ao banco de dados, definir a nossa pesquisa e um conjunto de registros que correspondam à ela. Para isso acrescente, na linha que começa com a palavra “dim”, acima, duas variáveis; a 1ª vamos utilizar para a conexão e a 2ª para o conjunto de registros; neste tuto, essas variáveis se chamarão “conex” e “rs”, sem aspas; a linha ficará assim:

dim palavra, criterio, conex, rs, consulta

13. A seguir, após as linhas 3 e 4, acima, insira o seguinte código:

set conex=Server.CreateObject("ADODB.Connection")
conex.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\inetpub\wwwroot\testeASP\XXX.mdb"

Set rs = Server.CreateObject("ADODB.Recordset")

if(palavra <> "") then
consulta="SELECT tbjogador.nome_jogad, tbclubes.nome_clube, tbpos.pos FROM tbpos INNER JOIN (tbclubes INNER JOIN tbjogador ON tbclubes.id_clube = tbjogador.clube) ON tbpos.id_pos = tbjogador.posicao where "&criterio&" like '%"& palavra &"%' order by nome_jogad"

rs.Open consulta, conex

Do while not rs.EOF

response.write rs.Fields("nome_jogad")&" - "
response.write rs.Fields("nome_clube")&" - "
response.write rs.Fields("pos")&"<br />"

rs.MoveNext
loop


14. Substitua os "XXX" acima pelo nome do seu arquivo e verifique o caminho; a seguir, acrescente as seguintes linhas para fechar a conexão:

rs.Close()
Set rs = Nothing

15. E as linhas a seguir para fechar o “IF” acima:

else
response.write " "
end if

16. Teste no navegador; sua busca avançada já estará funcionando corretamente.