USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  ASP - Active Server Page    (Miscelâneas)

Título da Dica:  Request.Form ( ) aprofundado
Postada em 27/10/2003 por ^HEAVY-METAL^            
O sintax de Request.Form syntax é muito simples e curto:

Request.Form(elemento)[(index)|.Count]

Vamos lá a ver como isto trabalha para o seu melhor interesse. Vamos começar com uma simples página que responde a um input de um utilizador.

-- page8.asp –

<html>
<head>
<title>Request.Form</title>
</head>
<body>
<% If Not Request.Form("Name")="" Then %>
Thanks <%=Request.Form("Name")%> !<br>
<% End If %>
<form method="post" action="page8.asp">
Give me your name:<input type="text" value="" name="Name">
<br>
<input type="submit">
</form>
</body>
</html>

-- fim da página –

Quando o Script é chamado pela primeira vez, por um link normal, não existem dados do form nele, então um pedido a Request.Form("Name") devolve uma string vazia. A página devolve então um formulário com 2 inputs. Um input de texto com o nome ‘Name’ e outro com o botão de submit sem nome e sem 'value'. quando o formulário é submetido a usar o botão de submit, a mesma página é chamada com POST (nota: o método do formulário). Agora o Request.Form("Name") tem um valor nele ( mesmo que seja uma string vazia), e ( se não for uma string vazia ) o if vai disparar uma mensagem de agradecimento. Agora muitas questões podem crescer aqui. O que acontece ao botão de Submit? Quais as outras hipóteses de disparo? É o ‘Name’ diferente de ‘name’? Vamos reescrever o código e achar algumas respostas.

-- page8a.asp –

<html>
<head>
<title>Request.Form</title>
</head>
<body>
Request.Form Statistics:<br>
Number of inputs:<%=Request.Form.Count%><br>
<%For k=1 To Request.Form("Name").Count%>
Request.Form("Name")(<%=k%>)=<%=Request.Form("name")(k)%><br>
<%Next%>
<% If Not Request.Form("Name")="" Then %>
<br>
Thanks <%=Request.Form("name")%> !
<% End If %>
<hr>
Form without name on submit input:<br>
<form method="post" action="page8a.asp">
Give me your name:<input type="text" value="" name="Name">
<br>
<input type="submit">
</form>
<hr>
Form with name on submit input:<br>
<form method="post" action="page8a.asp">
Give me your name:<input type="text" value="" name="Name">
<br>
<input type="submit" name="submit">
</form>
<hr>
</body>
</html>

-- fim da página –

Isto devolve o numero de inputs que nós temos na colecção do request.Form. Na primeira chamada, esta página vai indicar que não hà inputs ( itens na colecção do Request.Form ). Vai também mostrar 2 forms separados por breasks.O primeiro não tem um nome para o botão de Submit. Se escrever algo na zona de input e submeter o formulário, vai ver que existe um input e o seu valor.Se fizer o mesmo com o segundo formulário, vão existir 2 inputs, name e submit, como estão chamados no HTML. No tipo de input Submit, se indicar o nome, o par name/value vai ser dado pelo browser para o servidor web. A pergunta é ‘name' diferente de ‘Name’ quando do uso de Request.Form.

Vamos então mudar de tópico. Como usamos uma Select Box com multiplas hipóteses? Uma vez mais, vamos reescrever o nosso código e ver o que vai acontecer.

-- page8b.asp –

<html>
<head>
<title>Request.Form</title>
</head>
<body>
<% If Not Request.Form("Name")="" Then %>
Thanks <%=Request.Form("Name")%> !<br>
<%For k=1 To Request.Form("Name").Count%>
Request.Form("Name")(<%=k%>)=<%=Request.Form("name")(k)%><br>
<%Next%>
<% End If %>
<form method="post" action="page8b.asp">
Give me your name:<select name="name" size="5" multiple>
<option>Sergio</option>
<option>Pereira</option>
<option>Stephen</option>
<option>Wynkoop</option>
<option>Oberonsis</option>
</select>
<br>
<input type="submit">
</form>
</body>
</html>

-- fim da página –

Com o atributo multiplo, o Select pode devolver várias ou nenhuma opção.Seleccione vários e veja o reultado. Request.Form("Name").Count vai devolver o numero de opções escolhidas e o loop com o For, vai mostrar cada uma dessa opções escolhidas Request.Form.(k), onde k é o index da opção escolhida.De notar que se nenhuma opção for escolhida Request.Form("Name") vai ser uma string vazia, e então Request.Form("Name").Count vai devolver o numero 0. Se existem várias opções escolhidas o mesmo vai devolver os mesmos concatenados e separados por virgulas, Request.Form("Name")(k) vai devolver a opção k escolhida. De notar que o index k deverá estar entre 1 e Request.Form("Name").Count .

Vamos nos mover para sabermos como podemos usar Request.Form para julgar futuras acções do nosso script. Algo simples que vai dizer ‘Welcome ’ se carregar em ‘Enter’ e ‘Goodbye’ se clicar em ‘Leave’.

-- page8c.asp –

<html>
<head>
<title>Request.Form</title>
</head>
<body>
<%
If Not Request.Form("Name")="" Then
Select Case Request.Form("action")
Case "Enter"
%> Welcome <%=Request.Form("Name")%> !<br>
<%
Case "Leave"
%> Goodbye <%=Request.Form("Name")%> !<br>
<% End Select
End If %>
<form method="post" action="page8c.asp">
Give me your name:<input type="text" name="Name" value="<%=Request.Form("name")%>">
<br>
<input type="submit" name="action" value="Enter">
<input type="submit" name="action" value="Leave">
</form>
</body>
</html>

-- fim da página –-

Temos 2 submits com o mesmo nome, mas com values diferentes. Apenas o value do submit que carregamos vai ser dado ao servidor, assim podemos fazer um teste no value, e fazer a acção direccionada para o mesmo.

Como pode ver, com a colecção de Request.Form é muito simples. Existe ainda algo que deve ser dito, quando do uso de Check Boxes num formulário de HMTL, deve de o testar com

If Request.Form("checkbox")="" Then
‘Code to do when checkbox selected
Else
‘Code to do when checkbox is not selected
End If

porque devolve ‘on’ quando seleccionado e nada quando não.


T+,
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página