Leobreda.Net
HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL
Pesquisa por: asp
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:
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
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".
<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...
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.
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).