Shopping Hospedagem Fórum Contato
     
   O portal do desenvolvedor ASP Florianópolis-SC, Domingo - 19 de Agosto de 2018  
Busca

Menu do site
Efetuar Login
Usuário:

Senha:

 Esqueceu a senha?
Login automático

 Cadastre-se
Checkbox com mais de uma opção
Avaliações: 44   -   Minha nota: Média Geral: 3  

Lembram do artigo "Listbox com mais de uma opção", anterior a este?
Pois bem, vamos neste artigo aprender a fazer o mesmo com o Checkbox.



1- Criando a Checkbox

Ó código HTML para criar uma Checkbox é simples:

1
2
3
4
5
6
<input type="checkbox" name="ano" value="2000">Ano de 2000<br>
<input type="checkbox" name="ano" value="2001">Ano de 2001<br>
<input type="checkbox" name="ano" value="2002">Ano de 2002<br>
<input type="checkbox" name="ano" value="2003">Ano de 2002<br>
<input type="checkbox" name="ano" value="2004">Ano de 2004<br>
<input type="checkbox" name="ano" value="2005">Ano de 2005<br>

Veja agora a mesma Checkbox criada dinamicamente com o ASP:

1
2
3
<%For i = 2000 to 2005%>
<input type="checkbox" name="ano" value="<%=i%>">Ano de <%=i%><br>
<%Next%>


Veja abaixo nosso código em funcionamento, tente escolher mais de uma opção.

Ano de 2000
Ano de 2001
Ano de 2002
Ano de 2003
Ano de 2004
Ano de 2005



2- Salvando as opções escolhidas da Checkbox

Quando a Checkbox é enviada pelo formulário, todas as opções escolhidas são enviadas separadas por uma vígula.
Ex.: 2001, 2003, 2005

Para exibir as informações capturadas desta Checkbox, usamos o seguinte código:

1
<%=Request.Form("ano")%>


Poderiamos simplesmente salvar estas informações na base de dados da maneira como são capturadas. Mas, como precisaremos capturá-las posteriormente, existem certos casos que podem haver conflito quando as opções contiverem conteúdo semelhante.

Por exemplo, se buscarmos pela opção "21", e na Checkbox existir também a opção "210", a mesma tambem sera capturada, bem como a opção "21", bem como a opção "2100" e assim por diante, onde houverem ocorrências semelhantes.

Por isto, é necessário antes separarmos as opções, de forma que ao capturá-las, isto não ocorra.

1
2
3
4
5
6
<%
lista = Request.Form("ano")
lista = Replace(lista, " ", "")
lista = Replace(lista, ",", "-")
lista = "-" & lista & "-"
%>

Desta forma, o resultado das informações selecionadas na Checkbox seria:
Ex.: -2001-2003-2005-

Sendo assim, quando procurada pela opção "-2001-" para saber se a mesma foi selecionada, somente a mesma seria retornada, evitando o provavel conflito de informações mencionado anteriormente.



3- Capturando as opções escolhidas da Checktbox

Para deixar uma ou mais opçoes selecionadas, utiliza-se a opção checked na opção desejada. como mostra abaixo:
 
1
2
3
4
5
6
<input type="checkbox" name="ano" value="2000">Ano de 2000<br>
<input type="checkbox" name="ano" value="2001" checked >Ano de 2001<br>
<input type="checkbox" name="ano" value="2002">Ano de 2002<br>
<input type="checkbox" name="ano" value="2003" checked >Ano de 2002<br>
<input type="checkbox" name="ano" value="2004">Ano de 2004<br>
<input type="checkbox" name="ano" value="2005" checked >Ano de 2005<br>

Veja o resultado abaixo, com as opções previamente selecionadas:

Ano de 2000
Ano de 2001
Ano de 2002
Ano de 2003
Ano de 2004
Ano de 2005


Vamos agora ao código ASP que alêm de criar dinamicamente a Checkbox, trará as opções salvas, já previamente selecionadas:

1
2
3
<%For i = 2000 to 2005%>
<input type="checkbox" name="ano" value="<%=i%>" <%If InStr(objRS("ano"),"-" & i & "-") > 0 Then Response.Write "checked"%> >Ano de <%=i%><br>
<%Next%>


ATENÇÃO! lembre-se que o campo da base de dados a serem salvas as informações de ser do tipo MEMO, para que possa haver espaço suficiente para salvar todas as informações possíveis de uma Checkbox. Caso contrário, pode haver erro na hora de salvar.





4- Código completo

Para quem ainda não sabe como salvar em um banco de dados, segue o código completo:
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

<%
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "Data Source=C:\base_de_dados.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"

If Not IsEmpty(Request.Form) Then
  Set objRS = Server.CreateObject("ADODB.Recordset")
  objRS.CursorLocation = 2
  objRS.CursorType = 0
  objRS.LockType = 3
  strQ = "SELECT * FROM tabela"
  objRS.Open strQ, objCon, , , &H0001
  lista = Request.Form("ano")
  lista = Replace(lista, " ", "")
  lista = Replace(lista, ",", "-")
  lista = "-" & lista & "-"

  objRS("ano") = lista
  objRS.Update
  objRS.Close
  Set objRS = Nothing
%>

Os dados foram atualizados com sucesso.
<br><a href="<%=Request.ServerVariables("SCRIPT_NAME")%>">Clique aqui</a> para visualizar a Checkbox

<%
Else
  strQ = "SELECT * FROM tabela"
  Set objRS = objCon.Execute(strQ)
  If Not objRS.EOF Then
%>

<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
<%For i = 2000 to 2005%>
<input type="checkbox" name="ano" value="<%=i%>" <%If InStr(objRS("ano"),"-" & i & "-") > 0 Then Response.Write "checked"%> >Ano de <%=i%><br>
<%Next%>

<br><br><input type="submit" value="Enviar">
</form>

<%
  End If
  Set objRS = Nothing
End If

objCon.Close
Set objCon = Nothing
%>

Veja no codigo completo, os códigos de anteriormente na cor laranja.


Espero que este exemplo lhe seja útil.


Fabiano Dias
fabiano@superasp.com.br

www.superasp.com.br
O portal do desenvolvedor ASP




SuperASP do Brasil Ltda

03.066.522/0001-84
Av. Rio Branco 433 - Centro - Florianopolis - SC
Contato

© 2001/2008 - Superasp do Brasil Ltda. Todos os direitos reservados