Série de palestras ASP (15) usando formulários HTML
Autor:Eve Cole
Data da Última Atualização:2009-05-30 19:58:48
Usando o objeto ASP Request, você pode criar um script simples, porém poderoso, para coletar e processar dados de tabelas HTML. Neste tópico, você não apenas aprenderá como criar um script básico de processamento de tabelas, mas também obterá algumas técnicas úteis para validar informações de tabelas no servidor Web e no navegador do usuário.
Sobre tabelas HTML
As tabelas HTML, o método mais comum de coleta de informações da Web, são arranjos especiais de tags HTML que fornecem controles de interface do usuário em uma página da Web. Caixas de texto, botões e caixas de seleção são controles típicos que permitem aos usuários interagir com páginas da Web e enviar informações ao servidor da Web.
O exemplo HTML a seguir gera um formulário no qual o usuário pode inserir seu nome, idade e contém um botão que envia essas informações ao servidor Web. O formulário também contém um controle implícito (não exibido pelo navegador da Web) que pode ser usado para transmitir informações adicionais ao navegador da Web.
<FORM METHOD="POST" ACTION="meuarquivo.asp">
<INPUT TYPE="text" NAME="nome">
<INPUT TYPE="text" NAME="sobrenome">
<INPUT TYPE="text" NAME="idade">
<INPUT TYPE="oculto" NAME="userstatus" VALUE= "novo">
<INPUT TYPE="enviar" VALUE="Enter">
</FORM>
Formulários que tratam de entrada ASP Quando o formulário envia informações ao servidor Web, o navegador Web do usuário solicita o arquivo .asp especificado com o atributo ACTION da tag HTML <FORM> (no exemplo anterior, o arquivo era chamado Myfile.asp ) . Os arquivos .asp contêm scripts que manipulam valores de tabela, como exibir uma tabela de resultados ou consultar informações de um banco de dados.
Existem três maneiras de coletar valores de tabelas HTML usando arquivos .asp
O arquivo estático .htm pode conter uma tabela cujos valores são enviados para o arquivo .asp.
Um arquivo .asp pode criar um formulário que envia suas informações para outro arquivo .asp.
O arquivo .asp pode criar um formulário que envia suas informações para si mesmo, o arquivo que contém o formulário.
Os dois primeiros métodos operam da mesma maneira e, quando o formulário interage com o programa gateway, diferente do ASP, pode incluir comandos para ler e responder às seleções do usuário.
Criar um arquivo .asp que contém uma definição de tabela e envia informações para si mesmo é uma maneira mais complexa, porém poderosa, de trabalhar com tabelas. Esse processo é demonstrado em Validando entradas de formulário.
Obter entrada do formulário
O objeto Solicitação ASP fornece duas coleções que simplificam bastante a tarefa de recuperar informações de formulário anexadas a uma solicitação de URL.
Coleção QueryString
A coleção QueryString obtém o valor passado ao servidor Web como o texto que segue o ponto de interrogação na URL solicitada. Os valores da tabela podem ser anexados ao URL solicitado usando o método HTTP GET ou adicionando manualmente os valores da tabela ao URL.
Por exemplo, se o exemplo da tabela anterior usasse o método GET (ACTION = "GET") e o usuário digitasse Jeff, Smith e 30, a seguinte solicitação de URL seria enviada ao servidor:
http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new
Myfile.asp contém o seguinte script de processamento de tabela:
Olá, <%= Request.QueryString("nome") %> <%= Request.QueryString("sobrenome") %>.
Você tem <%= Request.QueryString("age") %> anos.
<%
Se Request.QueryString("userstatus") = "novo usuário" então
Response.Write"Esta é sua primeira visita a este site!"
Terminar se
%>
Neste caso, o servidor web retornará o seguinte texto ao navegador do usuário:
Olá, Jeff Smith. Você tem 30 anos. Esta é sua primeira visita a este site!
A coleção QueryString possui um parâmetro opcional que pode ser usado para acessar um dos vários valores que aparecem no corpo da solicitação. Você também pode usar a propriedade Count para contar o número de ocorrências de um determinado tipo de valor.
Por exemplo, um formulário contendo uma caixa de listagem com vários itens poderia enviar a seguinte solicitação:
http://list.asp?food=apples&food=olives&food=bread
Você também pode usar o seguinte comando para contar vários valores:
Request.QueryString("comida").Contagem
Se você quiser exibir vários tipos de valores, List.asp deverá conter o seguinte script;
<%Total = Request.QueryString("comida").Count%>
<%Para i = 1 para Total%>
<%= Request.QueryString("comida")(i) %> <BR>
<%Próximo%>
O script acima exibirá:
maçãs
azeitonas
pão
Coleta de formulários Ao usar o método HTTP GET para passar valores de formulário longos e complexos para o servidor Web, as informações podem ser perdidas. A maioria dos servidores Web tende a controlar rigorosamente o comprimento das strings de consulta de URL, de modo que os valores longos da tabela passados usando o método GET sejam truncados. Se você precisar enviar grandes quantidades de informações de um formulário para um servidor Web, deverá usar o método HTTP POST. Este método é usado para enviar dados da tabela no corpo da solicitação HTTP e o número de caracteres enviados pode ser ilimitado. Você também pode usar a coleção Form do objeto ASP Request para recuperar valores enviados usando o método POST.
A coleção Form armazena valores numéricos da mesma forma que a coleção QueryString. Por exemplo, se um usuário preencher uma tabela com uma longa lista de nomes, você poderá recuperar esses nomes com o seguinte script:
<% Para i = 1 para Request.Form.Count %>
<% =Request.Form("nomes")(i) %>
<% Próximo %>
Validando entradas de formulário Um bom script de processamento de formulário deve verificar se as informações inseridas no formulário são válidas antes de processar os dados. Os scripts de validação podem verificar se o tipo de informação que os usuários inserem em um formulário está correto. Por exemplo, se o seu site contém um formulário que permite aos usuários calcular informações financeiras, antes de processar os resultados, você precisa verificar se o usuário realmente inseriu informações numéricas e não texto.
Uma maneira muito conveniente de validar a entrada do formulário é criar um formulário que passe informações para si mesmo. Neste caso, o arquivo .asp contém uma tabela da qual as informações podem ser obtidas. Por exemplo, o script a seguir verifica se o usuário inseriu um valor no campo da tabela "idade" passando informações para si mesmo:
<% If Isnumeric(Request.QueryString("Idade")) then %>
<p>Olá, sua idade é <%=Request.QueryString("age")%>
<%outro%>
<p>Insira uma idade numérica.
<%Fim se %>
<FORM METHOD= "POST" ACTION="verify.asp" >
Nome: <INPUT TYPE="text" NAME="Nome" >
Idade: <INPUT TYPE="text" NAME="Idade" >
<INPUT TYPE="enviar" VALUE="Enter">
</FORM>
Neste exemplo, o script também está no mesmo arquivo Verify.asp que contém a tabela. O formulário passa informações para si mesmo especificando Verify.asp no atributo ACTION.
Você também pode criar scripts do lado do cliente para verificar se os usuários inseriram informações válidas. A validação da entrada do usuário em um navegador da Web pode reduzir o tráfego de rede para o servidor da Web, além de alertar os usuários sobre erros de entrada de formulário mais rapidamente. O script a seguir é executado no navegador da Web do usuário e verifica as informações do usuário antes de enviá-las ao servidor Web.
<SCRIPT LANGUAGE="VBScript">
<!--
Sub btnEnter_OnClick
DimTheForm
Definir TheForm = Document.MyForm
Se IsNumeric(TheForm.Age.Value) Então
TheForm.submit
Outro
Msgbox "Por favor, insira uma idade numérica."
Terminar se
Finalizar sub
//-->
</SCRIPT>
<FORM METHOD= "POST" NAME= MeuForm ACTION="meuarquivo.asp" >
Nome: <INPUT TYPE="text" NAME="Nome" >
Idade: <INPUT TYPE="text" NAME="Idade" >
<INPUT TYPE="button" NAME="btnEnter" VALUE="Enter">
</FORM>