Toon posts:

[ASP] Checkbox probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Eeey

Ik moet voor school een web-site maken voor het invoeren van de stage resultaten. Het geheel moest in asp maar ben daar zelf niet zo goed is vandaar dat ik even wat hulp nodig heb:)
Het gaat om het volgende ;

Je moet een leerling invoeren en daarna met behulp van checkboxjes aangeven welke beoordelingsgesprekken die leerling krijgt. Ik heb de checkboxjes in een loop gezet en dat werkt maar hoe krijg ik die nu ingevoerd in mijn database...?
Ik heb een tabel genaamd student/beoordeling daarin worden de beoordelingsgesprekken opgeslagen. Tabel ziet er als volgt uit ; gebruikersnaam|beoordeelnr deze zijn allebij primaire key.
Dus bij elke checkbox moet auto de gebruikersnaam worden meegestuurd in de database
ASP:
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
<%      
    Set oRs3=Server.CreateObject("adodb.recordset")
    strSQL3 = "SELECT Beoordeling_Formulier.Beoordeling_naam, Beoordeling_Formulier.BeoordelingID FROM Beoordeling_Formulier "
    oRs3.Open strSQL3, conn3        
            
    Do while not oRS3.EOF
            %>
            <tr><td><form name="form1" method="post" action="">
              <input type="checkbox" name="<%Response.Write(oRs3("BeoordelingID"))%>" value="<%Response.Write(oRs3("BeoordelingID"))%>">
              </td>
            <%
            Response.Write("<td>")
            Response.Write oRS3 ("BeoordelingID")
            Response.Write("</td><td>")
            Response.Write oRs3("Beoordeling_naam")
            Response.Write("</td>")
            
            %>
</tr><TR><TD>&nbsp;</TD></TR>

    <%oRs3.MoveNext%> 
    
<%
    loop
    oRs3.Close%>
</table><INPUT NAME="leerlingnr" SIZE="20" type="hidden" value="<%=username%>"><center><INPUT TYPE="submit" VALUE="Opslaan"></center>


Ik hoop dat jullie snappen wat ik bedoel.
Alvast bedankt

Gr Vroem

[ Voor 16% gewijzigd door Verwijderd op 27-10-2005 14:53 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:13

TeeDee

CQB 241

Je kan gewoon met
code:
1
request.form("melp")
één specifiek form element aanspreken.
Hoe je in een loop de rest van bijvoorbeeld je checkboxes in kan lezen, dat is te vinden via google.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Equator
  • Registratie: April 2001
  • Laatst online: 24-04 18:02

Equator

Crew Council

#whisky #barista

Kijk hier eens voor wat uitleg.. http://www.w3schools.com/asp/asp_inputforms.asp

inweze geef je een ASP file aan als action in je script, en in die asp file doe je de juiste acties uitvoeren.
Dwz: je genereert je update statement met de Request.Form waardes en je voert de update statement uit nadat je de connection tot stand hebt gebracht.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Wat TeeDee zegt. Let daarbij trouwens wel op dat checkboxes alleen op de volgende pagina aankomen na een submit als ze aangevinkt zijn. Als ze niet aangevinkt zijn, dan hebben ze geen waarde.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:13

TeeDee

CQB 241

CyberJ schreef op donderdag 27 oktober 2005 @ 15:09:
Kijk hier eens voor wat uitleg.. http://www.w3schools.com/asp/asp_inputforms.asp

inweze geef je een ASP file aan als action in je script, en in die asp file doe je de juiste acties uitvoeren.
Dwz: je genereert je update statement met de Request.Form waardes en je voert de update statement uit nadat je de connection tot stand hebt gebracht.
Kleine aanvulling:
Ik lees hier school. voerm226, mag ik je nog één tip geven. Let heel erg goed op dat je de waardes uit je formulier niet zomaar 1 2 3 in de database stopt. (Sql injection)

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Equator
  • Registratie: April 2001
  • Laatst online: 24-04 18:02

Equator

Crew Council

#whisky #barista

TeeDee schreef op donderdag 27 oktober 2005 @ 15:12:
[...]

Kleine aanvulling:
Ik lees hier school. voerm226, mag ik je nog één tip geven. Let heel erg goed op dat je de waardes uit je formulier niet zomaar 1 2 3 in de database stopt. (Sql injection)
De vraag van de TS was hoe je de ingevulde waardes uit het form in de database krijgt.

Als je dergelijk basic stuff niet beheerst denk ik dat je helemaal gek wordt als je om de oren wordt geslagen emt SQL Injection, Parameterised Queries en of Stored Procedures.

Maar inweze heb je gelijk..

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 24-04 17:54

RM-rf

1 2 3 4 5 7 6 8 9

Wat je waarschijnlijk wilt is:

ASP.NET Visual Basic:
1
<input type="checkbox" name="BeoordelingID" value="<%Response.Write(oRs3("BeoordelingID"))%>">


dus een statische 'name'-waarde, die je simpelweg weer kunt opvragen via
ASP.NET Visual Basic:
1
request.form("BeoordelingID")

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Nee, dan kan je dus niet meer een variable aantal checkboxes gebruiken.
Met de code van de TS:
code:
1
2
3
4
Do while not oRS3.EOF
%>
<input type="checkbox" name="<%Response.Write(oRs3("BeoordelingID"))%>" value="<%Response.Write(oRs3("BeoordelingID"))%>">
<%

Is dit op zich mogelijk, dit levert de volgende checkboxes op (er vanuitgaande dat ID een int is, is niet belangrijk voor het voorbeeld):
code:
1
2
3
<input type="checkbox" name="1" value="1">
<input type="checkbox" name="2" value="2">
etc..

Om nu de geselecteerd checkboxes na een post te achterhalen zul je dus zoiets moeten doen
code:
1
2
3
Do while not oRS3.EOF
  IF Request.Form(oRs3("BeoordelingID")) != "" THEN
    'Blijkbaar is deze checkbox geselecteerd, doe er iets mee

[ Voor 15% gewijzigd door sig69 op 27-10-2005 15:31 ]

Roomba E5 te koop


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 24-04 17:54

RM-rf

1 2 3 4 5 7 6 8 9

sig69 schreef op donderdag 27 oktober 2005 @ 15:31:
Nee, dan kan je dus niet meer een variable aantal checkboxes gebruiken.
dat is ook niet nodig, aangezien hij binnen zijn while-loop, ook de form-tag opent en sluit

edit: ach nee, ik zie dat hij die niet sluit, enkel opent, dat is wel heel erg sloppy code en is vragen om problemen

[ Voor 20% gewijzigd door RM-rf op 27-10-2005 16:44 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Bedankt voor de reactie's
Ik weet het is een beetje amateur werk maar goed je ergens beginne:)
Ik snap dat je met reqeust.form de waarde kan uitlezen maar hoe zet ik dat in een loopje zodat die alleen de aangevinkte checkboxjes invoert+gebruikersnaam...

Thx for helping

Gr Vroem

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Verwijderd schreef op vrijdag 28 oktober 2005 @ 00:47:
Bedankt voor de reactie's
Ik weet het is een beetje amateur werk maar goed je ergens beginne:)
Ik snap dat je met reqeust.form de waarde kan uitlezen maar hoe zet ik dat in een loopje zodat die alleen de aangevinkte checkboxjes invoert+gebruikersnaam...

Thx for helping

Gr Vroem
Je kunt de items in de collectie request.form ook aanroepen met een index, dus het is niet moeilijk om dat in een loop te zetten. Zie ook hier

Je kunt ook een For Each element In Request.Form gebruiken om door je form-elementen te lopen.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Verwijderd schreef op vrijdag 28 oktober 2005 @ 00:47:
Bedankt voor de reactie's
Ik weet het is een beetje amateur werk maar goed je ergens beginne:)
Ik snap dat je met reqeust.form de waarde kan uitlezen maar hoe zet ik dat in een loopje zodat die alleen de aangevinkte checkboxjes invoert+gebruikersnaam...

Thx for helping

Gr Vroem
[rml]sig69 in "[ ASP] Checkbox probleem"[/rml]

Roomba E5 te koop


Verwijderd

Topicstarter
was k weer sorry had er vandaag pas weer tijd voor,

Er zijn me nog wat dingen onduidelijk,

De pagina ziet er nu als volgt uit ;

ASP:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
    <%
'Dimension variables
dim adoCon8
dim strSQL8
dim rsCheck8



'Create an ADO connection object
Set adoCon8 = Server.CreateObject("ADODB.Connection") 
 
'Set an active connection to the Connection object using a DSN-less connection
adoCon8.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\db\bpv.mdb")


'Create an ADO recordset object
Set rsCheck8 = Server.CreateObject("ADODB.Recordset") 
 

'Initialise the strSQL variable with an SQL statement to query the database 
strSQL8 = "SELECT Leerlingnr from Leerlingen where Leerlingnr = '" & Username & "'"

'Open the recordset with the SQL query 
rsCheck8.Open strSQL8, adoCon8
%>
            <%If rsCheck8.EOF Then%>
            <%Session("Leerlingnr") = Request.Form("Leerlingnr")%>
            <%Response.Redirect"enter2.asp"%>
            <%else

'Reset server objects
rsCheck8.Close
Set rsCheck8 = Nothing
Set adoCon8 = Nothing

end if%>
        
    
    
<%      
    Set oRs3=Server.CreateObject("adodb.recordset")
    strSQL3 = "SELECT Beoordeling_Formulier.Beoordeling_naam, Beoordeling_Formulier.BeoordelingID FROM Beoordeling_Formulier "
    oRs3.Open strSQL3, conn3        
            
    Do while not oRS3.EOF
            %>
            <tr><td><form name="form1" method="post" action="enter2.asp">
              <input type="checkbox" name="<%Response.Write(oRs3("BeoordelingID"))%>" value="1">
              </td>
              

            <%
            Response.Write("<td>")
            Response.Write oRS3 ("BeoordelingID")
            Response.Write("</td><td>")
            Response.Write oRs3("Beoordeling_naam")
            Response.Write("</td>")
            
            %>
</tr><TR><TD>&nbsp;</TD></TR>

    <%oRs3.MoveNext%> 
    
<%
    loop
    oRs3.Close%>
    <input type="hidden" name="Leerlingnr" size="20" VALUE="<%=username%>">
</table><center><INPUT TYPE="submit" VALUE="Opslaan"></center>
</form>


en hij stuurt het door naar enter2.asp die ziet er zo uit
ASP:
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
<%Session("Leerlingnr") = Request.Form("Leerlingnr")%>
<%
'Dimension variables
Dim rsAddData       'Holds the recordset for the new record to be added
Dim strSQL             'query the database
Dim adoCon             'holds the database connection


'Create an ADO connection object
Set adoCon = Server.CreateObject("ADODB.Connection")

'Set an active connection to the Connection object using a DSN-less connection
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\db\bpv.mdb")

 'Create an ADO recordset object
Set rsAddData = Server.CreateObject("ADODB.Recordset") 

'Initialise the strSQL variable with an SQL statement to query the database
strSQL = "SELECT * from [student/beoordeling]"

'Set the cursor type we are using so we can navigate through the recordset
rsAddData.CursorType = 2

'Set the lock type so that the record is locked by ADO when it is updated
rsAddData.LockType = 3

'Open the recordset with the SQL query 
rsAddData.Open strSQL, adoCon

'Tell the recordset we are adding a new record to it
rsAddData.AddNew

'Add a new record to the recordset
rsAddData.Fields("Leerlingnr") = Session("Leerlingnr")
rsAddData.Fields("BeoordelingID") = Session("BeoordelingID")

'Write the updated recordset to the database
rsAddData.Update

'Reset server objects
rsAddData.Close
Set rsAddData = Nothing
Set adoCon = Nothing
%>
<%
Session.Abandon
%>


Hij stuur nu de gegevens door maar ik weet niet wat ik moet doen om de gegevens uit de checkboxjes te halen en te kijken of die is aangevinkt en zo ja dan opslaan in mijn db
Elke checkbox moet een eigen regel worden met daarin de waarde van de checkbox en de gebruikersnaam(leerlingnr)

Verwijderd

Topicstarter
ben weer op school dus kan er nu goed meebezig.
Ik snap nu dat je op de volgende pagina het spul kan uitlezen doormiddel van
ASP:
1
2
3
4
<%
If   request.form("P1-V1")="on" then
      response.write "<br>We will confirm by US Mail"
end if%>


Maar ik wil dat ("P1-V1") in een loop word gezet zodat die kijkt welke checkboxjes die moet invoeren.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Nog steeds^^

Zelfde recordset ophalen, en daarin loopen en je Form variabelen ophalen.

[ Voor 19% gewijzigd door sig69 op 01-11-2005 10:33 ]

Roomba E5 te koop


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Kijk eens op http://www.aspfaqs.com/aspfaqs/ShowCategory.asp?CatID=9

Daar kun je alles vinden wat je wilt weten!

Suc6

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Topicstarter
sig69 schreef op dinsdag 01 november 2005 @ 10:33:
[...]

Nog steeds^^

Zelfde recordset ophalen, en daarin loopen en je Form variabelen ophalen.
Thx voor reply's
Oke ik heb dit gedaan en hij geeft het nu goed aan hij laat nu zien welke boxjes ik heb aangevinkt.!
Zo ziet mijn pagina er nu uit
ASP:
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
<%@ Language=VBScript %>
<%Option explicit
Dim oRs3, conn3, connect3, strSQL3

set conn3=server.CreateObject ("adodb.connection")
connect3 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\db\bpv.mdb") & ";Persist Security Info=False"
conn3.Open connect3

%>
<%      
    Set oRs3=Server.CreateObject("adodb.recordset")
    strSQL3 = "SELECT Beoordeling_Formulier.Beoordeling_naam, Beoordeling_Formulier.BeoordelingID FROM Beoordeling_Formulier "
    oRs3.Open strSQL3, conn3        
            
    Do while not oRS3.EOF
            %><%
            IF Request.Form(oRs3("BeoordelingID"))= "on" THEN
      Response.Write(oRs3("BeoordelingID"))
end if%>

    <%oRs3.MoveNext%> 
    
<%
    loop
    oRs3.Close%> 

Hoe post ik nu die gesprekken in de database???
Op de volgende manier moet het erin komen

|Beoordelingsid|Leerlingnr|
-------------------------------------
| | |
-------------------------------------

En dan per geselecteerde checkbox een nieuwe regel met daarbij een gebruikersnaam.
Sorry voor de vele vragen maar weet zeker dat het moet lukken
thx again

cya

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Deze had je zelf kunnen bedenken. Je moet een INSERT query bouwen die de gegevens in de database opneemt.
Dus leerlingnr uit het form halen en ipv regel 3 voer je iets van de volgende strekking uit:
ASP:
1
2
3
Dim sSQL
sSQL = "INSERT INTO tabelletje (beoordelingid, leerlingnr) VALUES (" & oRs3("BeoordelingID") & "," & Request.Form("Leerlingnr") & ")"
conn3.Execute sSQL


Ik neem hierbij de kortst mogelijke weg, waarbij je webapp bijzonder onveilig is, maar ik wil niet meer moeite hierin steken dan jij doet :Y) Zoek in elk geval het principe sql insertion eens op met Google, daar check ik nu namelijk niet op.
Het stukje code is trouwens ongetest, dus zelf van typos ontdoen aub ;)

Verwijderd

Topicstarter
Eeey

Wou jullie even bedankt want het werkt zoals ik wou!!!:D:D:D
Thx

cya

Verwijderd

Topicstarter
Hallo,

Was ik weer,
Ik had nog even een klein vraagje, Ik ben nu een formulier aan het maken dat je leerlingen kan bewerken. Hoe kan ik er dan voor zorgen dat het zelfde formulier te voor schijn komt maar dan als die leerling de gesprekken al heeft dat de checkbox dan gevinkt is...?

Gr vroem

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Door de checked eigenschap van je checkbox aan te zetten.

Dus bijvoorbeeld:

Visual Basic:
1
2
3
4
5
<% If oRs.Fields("aangevinkt").Value = True Then %>
 <intput type="checkbox" checked="checked" name=...
<% Else %>
 <intput type="checkbox" name=...
<% End If %>


[ Voor 109% gewijzigd door CodeCaster op 03-11-2005 13:49 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Vind ik zoiets netter:
Visual Basic:
1
2
3
4
5
6
7
<% 
Dim checked
If oRs.Fields("aangevinkt").Value = True Then
  checked = "checked"
End If
 %>
<intput type="checkbox" checked="<%=checked%>" name=...>

Roomba E5 te koop


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Ik geloof dat IE dat niet zo leuk vindt, als die 'checked' leest bij een checkbox, dan checkt ie hem, dat 'checked="checked"' is valide XHTML 1.0.

Dus bij 'checked=""' wordt hij hoogstwaarschijnlijk in IE ook aangevinkt, al weet ik dat niet heel zeker.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Als dat het geval is, zou het natuurlijk nog zo kunnen:
Visual Basic:
1
2
3
4
5
6
7
<% 
Dim checked
If oRs.Fields("aangevinkt").Value = True Then
  checked = "checked='checked'"
End If
 %>
<intput type="checkbox" <%=checked%> name=...>

Roomba E5 te koop

Pagina: 1