Leobreda.Net

HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL

TAG cloud

.net     ajax     api     arquivo     array     asp     asp.net     banco de dados     bing     bloqueio     boas práticas     bug     c sharp     c#     c#     chart     classe     collate     collation     complemento     complementos     componente     conexão sql     connection string     css     cursor location     desativar programas     dom     erro cs0246     explorer     ferramenta de busca     firefox     ftp     função     global.asa     global.asax     google     gráfico     helicon     hospedagem ruim     hostphd     http 301     imagem     include     indexação     inicialização     insert     internet lenta     legendas     limit

Pesquisa por: asp

ASP: Evitando o código Spaghetti

asp, boas práticas, spaghetti, sql

15 de novembro de 2008     21:55322 visitas

Com a ascenção e o crescimento no mercado de TI, o webdesigner e o programador são profissionais que lidam diariamente com ferramentas distintas: o Webdesigner cuida do layout e da usabilidade da página, enquanto o programador cuida das funcionalidades e impressão de resultados.

Em muitos lugares, é de costume encontrar estes 3 tipos de profissionais:

  • Programadores que são experts em desenvolvimento de algoritmos;
  • Programadores que possui conhecimentos intermediários de programação e web design;
  • Web designers que possui conhecimentos avançados em web design, e um escasso conhecimento na área de programação.

E como fazer para um profissional fornecer o que o outro precisa? Devido ao crescimento deste mercado, foi necessário conceder na estrutura de desenvolvimento vários parâmetros, em que o principal deles é a camada de apresentação (onde o usuário final tem acesso às informações).

Nas linguagens de Programação voltadas p/ a Web, já é possível trabalhar em situações na qual o código-fonte fica separado da codificação de algoritmos.

Este é um exemplo para quem tem o costume de trabalhar com o ASP, misturando a programação com o código HTML, tipicamente conhecido como "algoritmo spaghetti".

 

Cito então um exemplo de um datagrid em ASP, na qual conecto a um banco de dados, e faço imprimir a relação de estados brasileiros:

 

1. Conexão SQL

<% Dim objConexao

 sub abreconexao()

Set objConexao = CreateObject("ADODB.Connection")
   objConexao.commandTimeout=20
   'MySQL Localhost
   objConexao.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost; Database=leobredacom; User=root;Password=root;Option=3;"
   objConexao.Open
end sub

sub fechaconexao()
   objConexao.Close : Set objconexao = Nothing
end sub

 

2. Montando o datagrid utilizando o "algoritmo spaghetti".

<html>

   <head>...</head>

   <body>

      <table>

         <tr>

            <td>Código</td>

            <td>Nome</td>

        </tr>

 

<% strSQL = "SELECT ESTADO_COD, ESTADO_DESC FROM ESTADOS WHERE PAIS='BRASIL' ORDER BY ESTADO_DESC"

       call abreConexao : set objRecordset=CreateObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao
       while NOT objRecordset.EOF%>

        <tr>

          <td><%=objRecordset("ESTADO_COD")%></td>

          <td><%=objRecordset("ESTADO_DESC")%></td>

       </tr>

 

<%objRecordset.MoveNext : wend : objRecordset.Close : set objRecordset=nothing : call fechaConexao%>

       </table>

   </body>

</html>

Pelo código, a programação se misturou com o HTML, onde não é critério do Programador lidar com HTML, e nem o WebDesigner se interessar o que está no algoritmo. Com a popularidade de editores WYSIWYG, a página será editada, e a consulta poderá ir para o final da página, ou mesmo ser apagada, ocorrendo complicações futuras, brigas entre os dois profissionais (a mais provável), etc.

 

3. Montando o datagrid SEM utilizar o "algoritmo spaghetti".

<% strSQL = "SELECT ESTADO_COD, ESTADO_DESC FROM ESTADOS WHERE PAIS='BRASIL' ORDER BY ESTADO_DESC"

call abreConexao : set objRecordset=CreateObject("ADODB.Recordset") : objRecordset.cursorLocation=3 : objRecordset.Open strSQL, objConexao
i=0

redim ESTADO(objRecordset.RecordCount-1,1)

while NOT objRecordset.EOF

ESTADO(i,0) = int(objRecordset("ESTADO_COD")) 'Código do Estado

ESTADO(i,1) = objRecordset("ESTADO_DESC") 'Nome do Estado

i=i+1

objRecordset.MoveNext : wend : objRecordset.Close : set objRecordset=Nothing : call fechaConexao%>

 

<html>

   <head>...</head>

      <body>

         <table>

            <tr>

               <td>Código</td>

               <td>Nome</td>

          </tr>

<%for i=0 to uBound(ESTADO)%>

         <tr>

             <td><%=ESTADO(i,0)%></td>

             <td><%=ESTADO(i,1)%></td>

        </tr>

 <%next%>

     </table>

  </body>

</html>

Por este código, foi possível separar a programação da página em sí. Costumo adotar este padrão, inserindo TODAS as programações possíveis antes do código HTML. Se for preciso alterar o layout da página, basta o Webdesigner manipular dentro do HTML os valores do vetor ESTADO. Se apagar, basta consultar onde o vetor foi montado linha-a-linha, dizendo o que é cada informação do vetor através do "dicionário de informações" nos comentários...

Implementando ferramenta de busca em seu site

asp, collate, collation, ferramenta de busca, sql

12 de outubro de 2008     21:56437 visitas

Este POST é ideal para quem está implementando alguma ferramenta de busca, semelhante à esta aqui que eu criei no Instituto Chiavenato.

 

1. Diferenças entre palavras com e sem acentuação

Digamos que você precisa trazer resultados SQL os usuários que mora no Estado de São Paulo.

SELECT * FROM USUARIOS WHERE ESTADO='São Paulo'

 

Mas e pra quem mora em cidade como Sao Paulo, sao paulo (em minúsculo mesmo), sáo paulo, são páulo, etc ?

Para isso existe o Collation LATIN1_GENERAL_CI_AI, na qual traz os resultados, indiferente se os mesmos possuem acentos ou não.

SELECT * FROM USUARIOS WHERE ESTADO COLLATE LATIN1_GENERAL_CI_AI LIKE 'São Paulo'

 

Este método é ideal mesmo quando já estabeleceu os Collations na contrução das tabelas.

 

2. O realce nas buscas

O usuário digitou "Lorem Ipsum" em sua ferramenta de busca. Surge então o seguinte resultado:

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetuer adipiscing elit.

 

Para isso, é necessário saber sério???kkk o que o usuário digitou. Depois, dar um Replace com os parâmetros 1, -1, 1 na qual utiliza-se para não diferenciar caracteres

maiúsculos de caracteres minúsculos.

<%

DIGITADO = "Lorem Ipsum"

TEXTO = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum dolor sit amet, consectetuer adipiscing elit."

 

TEXTO_FINAL = Replace(TEXTO, DIGITADO, "<span style=""font-weight:bold;background-color:#ffff00;padding:1px 0px;"">" & DIGITADO & "</span>", 1, -1, 1)

 

Response.write TEXTO_FINAL

%>

 

Eu só ainda não achei uma solução para realçar palavras com ou sem acentuação.

Boas práticas para trabalhar com ASP - Parte III

asp, banco de dados, boas práticas, função, insert, sql, update

27 de setembro de 2008     22:00376 visitas

Conforme os POSTs anteriores, estou enviando mais uma dica à respeito de Conexão ao Banco de Dados. Desta vez, estarei falando sobre o comando INSERT e UPDATE.

Atualmente, o comando SELECT é utilizado para ler resultados de um banco de dados. Já o INSERT, é um comando para INSERIR dados neste mesmo banco de dados. E para atualizar os dados, temos o UPDATE.

Seguindo os mesmos caminhos do Include CONEXAO.ASP, informado no post Boas práticas para trabalhar com ASP - Parte II ...

 

Arquivo conexao.asp

<%
Dim objConexao
Dim objComando
Dim executa

sub abreconexao()
Set objConexao = CreateObject("ADODB.Connection")
objConexao.commandTimeout=20

'MySQL Localhost
objConexao.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};

Server=localhost;Database=leobredacom; User=root;Password=root;Option=3;"
objConexao.Open
conexao_executa=true
end sub

sub executaconexao(comando)
if conexao_executa=false then
call abreconexao
end if

set objComando = CreateObject("ADODB.Command")
objComando.ActiveConnection = objConexao
objComando.CommandText = comando
objComando.Execute()
Set objComando = Nothing
call fechaconexao
end sub

sub fechaconexao()
objConexao.Close : Set objconexao = Nothing
conexao_executa=false
end sub
%>  

 

O arquivo pagina.asp, fazendo um SELECT, ...

<!--#include file="conexao.asp"-->

Olá, agora são <%=now()%>

<% strSQL = "SELECT ESTADO_DESC FROM TB_ESTADO WHERE PAIS='Brasil' ORDER BY ESTADO_DESC"
   call abreConexao : set objRecordset = CreateObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao

   while NOT objRecordset.EOF%>

      Estado: <%=ObjRecordset("ESTADO_DESC")%><br />

<% objRecordset.MoveNext : Wend : objRecordset.Close : set objRecordset = Nothing : call fechaConexao%>

 

 

... inserindo e atualizando os resultados utilizando a sub executaConexao().

<!--#include file="conexao.asp"-->

<% strSQL = "INSERT INTO TB_ESTADO (PAIS, ESTADO) VALUES ('Brasil', 'São Paulo')"

   executaConexao(strSQL)

 

   strSQL = "UPDATE TB_ESTADO SET PAIS='Paraguai' WHERE ESTADO_DESC='Assunción'"

   executaConexao(strSQL) %>

 

A própria sub abreConexao() faz a conexão ao banco de dados, e a execução do INSERT (ou UPDATE, conforme a necessidade).

2010 - Leonardo Breda