Jul/090
Classe que mostrar dados da Conta do Twitter
Olá a todos, nesse artigo vamos aprender a criar um exemplo simples de como mostrar os dados de uma conta do twitter em sua página, resgatando informações de um XML:
O link é Simples: http://twitter.com/users/show/ted_k.xml
Usando um Objeto para ler o XML e um layout agradável, chegamos a essa conclusão:

Criei uma classe chamada UserTwitter, dentro criei uma sub chamada LerXML() para fazer todo o processo:
página default.class.asp
class UserTwitter
public sub LerXML()
set objXMLDOM = server.createObject("MSXML2.DOMDocument.3.0")
objXMLDOM.async = false
objXMLDOM.setProperty "ServerHTTPRequest", true
objXMLDOM.validateOnParse = false
objXMLDOM.load("http://twitter.com/users/show/"request.queryString("username")".xml")
set raiz = objXMLDOM.getElementsByTagName("*")
OBS: coloquei o request.queryString para ter um resgate do nome do usuário mais objetivo!
E, um laço de repetição para pegar a posição de cada nó e para cada nome no XML, assim:
for i = 0 to raiz.length - 1
select case (raiz.item(i).nodeName)
case ("name") : tw.nome = raiz.item(i).text
case ("screen_name") : tw.screen_name = raiz.item(i).text
case ("location") : tw.location = raiz.item(i).text
case ("profile_image_url") : tw.profile_image_url = raiz.item(i).text
case ("url") : tw.url = raiz.item(i).text
case ("followers_count") : tw.followers_count = raiz.item(i).text
case ("friends_count") : tw.friends_count = raiz.item(i).text
case ("favourites_count") : tw.favourites_count = raiz.item(i).text
case ("statuses_count") : tw.statuses_count = raiz.item(i).text
case ("time_zone") : tw.time_zone = raiz.item(i).text
case ("profile_background_image_url") : tw.profile_background_image_url = raiz.item(i).text
case ("profile_background_color") : tw.profile_background_color = ucase(raiz.item(i).text)
case ("profile_text_color") : tw.profile_text_color = ucase(raiz.item(i).text)
case ("profile_link_color") : tw.profile_link_color = ucase(raiz.item(i).text)
case ("profile_sidebar_fill_color") : tw.profile_sidebar_fill_color = ucase(raiz.item(i).text)
case ("profile_sidebar_border_color") : tw.profile_sidebar_border_color = ucase(raiz.item(i).text)
end select
next
No código dentro do CASE coloquei o nome das tags do XML. fazendo o seguinte:
Quando encontrar o "nodeName" "tal", mostre "tal" case, como uma condicional IF
raiz.item(i).nodeName
Observando também que uso essa propriedade do XML (.text) para imprimir o que há na tag.
raiz.item(i).text
Criando um objeto e chamando ele na tela:
set tw = new UserTwitter tw.LerXML()
criei uma página chamada default.asp
<% Language="VBScript" %> <!--include file="Default.class.asp"--> ... o restante do código
Para ter acesso o código completo e o layout clique aqui para baixar
Jun/090
Forçando Downloads com ASP
public function download(arquivo, pasta)
dim objStream
set objStream = server.createObject("ADODB.Stream")
with (response)
.buffer = true
.addHeader "Content-Type","application/x-msdownload"
.addHeader "Content-Disposition","attachment; filename="&arquivo
.flush
end with
with (objStream)
.open
.type = 1
.loadFromFile server.mapPath(pasta)
end with
response.binaryWrite objStream.read
set objStream = nothing
response.flush
end function
Apr/090
Você sabe usar a função Replace() do ASP?
Uma função que parece ser bem simples, porém nem todos sabem utilizar por completa.
Nesse artigo vou mostrar como usar corretamente e com eficiência essa "simples função".
Todos nós programadores ASP sabemos usar simplificada a função Replace(), segue um exemplo:
<% dim frase frase = "Por uma internet sempre criativa e dinâmica" response.write(replace(frase, "sempre", "mais")) %>
Uma maneira simples, usamos o texto que está em pauta seguido da palavra que queremos substituir e depois da palavra que queremos colocar no lugar.
replace(texto em pauta, palavra que sai, palavra que entra)
Resultado o Script: "Por uma internet mais criativa e dinâmica"
OBS: a função replace() é "Case Sensitive" se quiser substituir "A" por "a", onde existir o "A" maiúsculo será substituído pelo "a" minúsculo.
Vamos para a parte que interessa mais:
No texto "Por uma internet mais criativa e dinâmica" queremos que a letra "i" de "internet" seja maiúscula e não as outras, como fazer isso?
Seguindo essa sequência "replace(texto em pauta, palavra que sai, palavra que entra)", existem mais três parâmetros opicionais que complementam a função:
* Posição inicial;
* Count (um contador que especifica o número de substituíção);
* Comparador de Strings (caso binário de padrão "zero" ou texto).
Segue o exemplo:
<% dim frase frase = "Por uma internet mais criativa e dinâmica" response.write(replace(frase, "i", "I", 1,1,1)) %>
Resultado do Script: "Por uma Internet mais criativa e dinâmica"
No parâmentro inicial você também pode usar ele como um "cortador de letras", exemplo: Eu não quero mais que apareça a palavra "Por", então cortamos três letras da frase, caso queira cortar o espaço também e usar quatro no contador fiquem a vontade, mais para isso usamos a função trim() que não vem ao caso.
Segue o exemplo:
<% dim frase frase = "Por uma internet mais criativa e dinâmica" response.write(replace(frase, "u", "U", 4,1,1)) %>
Resultado do Script: "Uma internet mais criativa e dinâmica"
Notem que coloquei no valor da posição o número "4" (quatro) e explicarei por que.
O valor padrão da posição inicial vem de default "1" (um) e não "0" (zero) como estamos acostumados em outras funções por isso adicionamos mais um valor no contador no caso "3 + 1".
E o que falar da última posição o "Comparador de Strings")
Olha como funciona:
Segue o exemplo:
<% dim frase frase = "Elegante" response.write(replace(frase, "e", "€", 1,1,0)) %>
Se eu deixar o valor inicial como "1" (um), e pegar só uma letra "e" e colocar no Comparador de Strings "0" (zero) o resultado sai:
Resultado do Script: "El€gante"
Ele não considerou a letra maiúscula "E" inicial, mais se eu trocar o último parâmentro para "1" (um), vamos ver no que gera.
Segue o exemplo:
<% dim frase frase = "Elegante" response.write(replace(frase, "e", "€", 1,1,1)) %>
Resultado do Script: "€legante"
Ele agora sim reconhece o primeiro "e" e faz a alteração, tenha muito cuidado quando for usar o Comparador de Strings, oks?
Abraços amigos, e vamos tomar conhecimento da linguagem para não fazer trabalho desnecessário:
Até o próximo artigo!
Dec/082
Cadastrar, Listar, Editar e Excluir dados de um XML com ASP - Parte 03
Criem um arquivo chamado Editar.asp e nele serão lidas todas as tags que contém no arquivoBanco.xml , mas com a querystring passada pelo arquivo Ler.asp que criamos no artigo anterior. Vamos só alterar uma única tag, um único nó do XML. Lembrando que usei uma tag "nome": mas vocês poderiam criar uma tag "id" e colocar números seqüenciais ou randômicos, a escolha fica a critério.
Vamos primeiro listar todos os registros, criando os objetos que já utilizamos nos primeiros artigos, nada a mais.
<%@ Language="VBScript" %>
<%
Dim Banco : Banco = Server.MapPath("Banco.xml")
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM")
Set objLER = Server.CreateObject("Microsoft.XMLDOM")
XMLDOC.Load(Banco)
Set objLER = XMLDOC.getElementsByTagName("*")
%>
Logo abaixo desse script vamos criar o formulário com um "for" fazendo a varredura nas tags para pegar só o valor de tag citado na querystring passada:
<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<form action="Editar.asp?nome=<%=Request.QueryString("nome")%>" method="post">
<input type="hidden" name="CampoUpdate" value="<%=Request.QueryString("nome")%>">
<%
For i = 0 To (objLER.length - 1)
If objLER.Item(i).Text = ""&Request.QueryString("nome")&"" Then
%>
<b>Nome: </b><input type="text" name="Nome" value="<% Response.Write(objLER.Item(i).Text) %>"><br>
<b>E-Mail: </b><input type="text" name="EMail" value="<% Response.Write(objLER.Item(i+1).Text) %>"><br>
<b>Telefone: </b><input type="text" name="Telefone" value="<% Response.Write(objLER.Item(i+2).Text) %>"><br>
<%
End If
Next
%>
<input type="submit" value="Editar" name="btEdt">
</form>
</body>
</html>
Reparem a linha onde temos If objLER.Item(i).Text = ""&Request.QueryString("nome")&"" Then, é ela que está "selecionando" a tag que quero mostrar.
E por fim a edição:
<%
If Request.Form("btEdt") = "Editar" Then
Dim Nome, EMail, Telefone, CampoUpdate, i
Nome = Request.Form("Nome")
EMail = Request.Form("EMail")
Telefone = Request.Form("Telefone")
CampoUpdate = Request.Form("CampoUpdate")
Set objLER_upDate = XMLDOC.getElementsByTagName("*")
For i = 0 To (objLER.length - 1)
If objLER.Item(i).Text = ""&CampoUpdate&"" Then
objLER.Item(i).Text = Nome
objLER.Item(i+1).Text = EMail
objLER.Item(i+2).Text = Telefone
End If
Next
XMLDOC.Save(Banco)
Response.Write("<script>alert('Editado com Sucesso!');location='Listar.asp'</script>")
Set objLER_upDate = Nothing
End If
Set objLER = Nothing
Set XMLDOC = Nothing
%>
Coloquei a querystring passada em um campo hidden e joguei ele dentro de um "for", como fiz no formulário, em seguida troquei os valores pelas variáveis em seqüência, Nome, EMail e Telefone, salvei com o método XMLDOC.Save e passei um alert em JavaScript e pronto!!
Façam os testes juntando os três artigos.
Esse tipo de utilização do XML serve para coisas pequenas, por exemplo, um combo de país, cidades de um determinado estado, cores, dentre outros.
Até os próximos artigos!



