Como é de conhecimento geral, hoje em dia o recurso ao Flash está cada vez mais enraizado na web (apesar de algumas pessoas pensaram que o AJAX irá causar mossa no desenvolvimento de sites em Flash, não está em causa o facto de concordar ou deixar de concordar, pessoalmente penso que existem espaço para as duas tecnologias, apesar de achar que o AJAX é uma boa tecnologia que já existe há algum tempo, mas só agora com o surgimento da
Web 2.0, quem ainda não ouvi esta expressão ponha o braço no ar, é que teve uma grande visibilidade, porém continuo a pensar é um pouco
overrated, mas isso são outras histórias as quais não entram para este snippet :))
(poderão consultar o artigo neste link).
Prosseguindo, é normal queremos ter algum feedback do nosso site, qualquer que seja o motivo: guestbook, opiniões sobre algo que tenhamos (ou o nosso cliente) organizado; etc; etc. Obviamente que o nosso [sarcastic mode="on"]
querido e adorado [sarcastic mode="off"] Flash também possui essas capacidades. Muito por alto o envio da informação poderá ser visto como um formulário simples html, em que poderemos usar dois métodos: POST e GET. Irá existir um ficheiro (asp, php, asp.net, you name it ...) que ao receber as variáveis (sejam elas post ou get) guarda-as num repositório de dados, seja ele igualmente qual fôr (mysql, sqlserver, txt, mdb, you name it ...), so far nothing new.
Uma imagem vale mais que mil palavras e é bem verdade (neste caso são duas imagens). Em baixo encontra-se um
formulário simples feito no Flash com 4 campos (são caixas de texto que apenas terão de ter um atributo diferente, mas mais em baixo será explicado) e 1 botão para "Enviar" a informação (equiparando ao form do html, não é mais do que um submit).
Agora vamos configurar os campos, só será mostrada a configuração do nome, porém os outros são em tudo semelhantes, uma das poucas diferenças é que se quisermos fazer com que o campo seja uma
textarea (lá voltamos à comparação com o html) teremos de mudar de
Single line para
Multiline ou eventualmente
Multiline no wrap.
A opção sinalizada com um rectângulo vermelho fará com que o flash permita a introdução de texto, como tal terá de ter esta tipificação para que possamos escrever qualquer coisa; o rectângulo a cor-de-laranja será o nome que queremos que o campo tenha e ao qual iremos fazer um
Request para obter a informação; por fim o rectângulo a azul é o tamanho máximo de caracteres que o campo pode ter. Estas 3 são as propriedades mais importantes, as outras ficam para os designers :)
Depois de preenchido o formulário o nosso visitante irá pressionar o "Enviar", este button irá necessitar de algum código, poderá ser algo do tipo como se encontra em baixo.
on (release) {
if (nome!=null) { //verificar se o campo nome está preenchido
System.useCodepage = true;
this.loadVariables ("comentario_add.asp", "POST"); //enviar para o ficheiro comentario_add.as, poderá ser visto como o método post de um form
this.onData = function () {
if (this.res == 'done') { //se a página enviar esta mensagem para o output significa que está tudo OK (o "done" é um valor qualquer que queiramos dar
this.nextFrame (); //passamos a outra frame que poderá dizer qualquer coisa como "Obrigado por participar" (opcional)
}
else { //se chegamos aqui é porque aconteceu qualquer erro no this.loadVariables!
this.gotoAndStop (8); //passamos a outra frame que poderá eventualmente exibir uma mensagem de erro (opcional)
}
};
}
}
Ok, já fizemos o submit para um ficheiro
comentario_add.asp e esse ficheiro irá ter o
dirty work, vai fazer a requisição da informação; vai tratá-la (lembrem-se do sql injection); vai fazer mais qualquer coisa que seja necessária e por fim vai armazenar a informação. Nestes passos todos resta saber como é que o Flash
sabe se a informação foi ou não guardada? Easy! Para compreenderem melhor a maneira como a informação poderá guardada vejam
este snippet, neste snippet existem duas funções para armanzar a informação:
guardarQuestionarioTXT e
guardarQuestionarioMDB. Imaginemos que estamos a submeter a informação do nosso Flash para este snippet, neste caso para que o Flash "perceba" que a informação está armazenada teremos de acrescentar uma linha antes do "end sub", o que se derem uma vista de olhos no código mais em cima, será de fácil compreensão:
Response.Write "res=done"
Poderá ficar algo deste tipo:
<%
sub guardarQuestionarioMDB(file, nome, opiniao, aspectos, pontos)
Dim adoCon
Dim strSQL
Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Mode=3
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(file)
strSQL = "insert into dados_comentarios (nome, opiniao, aspectos, pontos) values ('" & nome & "','" & opiniao & "','" & aspectos & "','" & pontos & "');"
adoCon.Execute strSQL
adoCon.Close
Set adoCon = Nothing
Response.Write "res=done"
end sub
%>
O Flash irá
"apanhar" o "res=done", se ocorrer algum erro não será feito o output do "res=done".
Qualquer erro/ dúvida é só dizer!