[ASP/webform] input type="radio"

Pagina: 1
Acties:

  • STING
  • Registratie: Juni 2000
  • Laatst online: 14-08 12:46
Het zal wel iets heel simpels zijn, maar ik heb een webform die data POST in een ASP file. Dit werkt op zich goed.

code:
1
<form method="POST" action="results.asp">


Welnu, op het form heb ik een aantal radio controls, waarmee je kunt kiezen in welke database je wilt zoeken.

Hoe kan ik ervoor zorgen dat als de gebruiker bijv. database1 selecteert, dat het webform dan POST in results1.asp, bij database2 results2.asp, enzovoorts.

code:
1
2
3
<input type="radio" value="V1" checked name="R1">Software database
<input type="radio" value="V1" name="R1">Knowledge base
<input type="radio" value="V1" name="R1">Procedures/Services database


Alvast heel erg bedankt!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waarom zou je met JavaScript (hint ;)) checken wat je post result wordt. Lijkt me logischer dat je dat server-side regelt :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ASP:
1
2
3
<input type="radio" value="V1" <% If recordset("database") = 1 Then Response.Write "Checked" %> name="R1">
<input type="radio" value="V2" <% If recordset("database") = 2 Then Response.Write "Checked" %> name="R1">
<input type="radio" value="V3" <% If recordset("database") = 3 Then Response.Write "Checked" %> name="R1">


* gorgi_19 kruipt weer over de schutting heen....

[ Voor 35% gewijzigd door gorgi_19 op 24-06-2003 10:39 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • STING
  • Registratie: Juni 2000
  • Laatst online: 14-08 12:46
Het gaat om drie verschillende MS Access databases, waar ik nu al verschillende ASP files voor heb. Een script die dan de juiste ASP aanroept is op dit moment het meest efficient.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

STINGnl schreef op 24 juni 2003 @ 10:39:
Het gaat om drie verschillende MS Access databases, waar ik nu al verschillende ASP files voor heb. Een script die dan de juiste ASP aanroept is op dit moment het meest efficient.
Waarom drie verschillende databases? Waarom niet alles in eentje?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • STING
  • Registratie: Juni 2000
  • Laatst online: 14-08 12:46
gorgi_19 schreef op 24 June 2003 @ 10:40:
[...]

Waarom drie verschillende databases? Waarom niet alles in eentje?
Dat is beheerstechnisch inderdaad beter, maar het kan helaas niet anders op het moment.

  • STING
  • Registratie: Juni 2000
  • Laatst online: 14-08 12:46
gorgi_19 schreef op 24 juni 2003 @ 10:39:
ASP:
1
2
3
<input type="radio" value="V1" <% If recordset("database") = 1 Then Response.Write "Checked" %> name="R1">
<input type="radio" value="V2" <% If recordset("database") = 2 Then Response.Write "Checked" %> name="R1">
<input type="radio" value="V3" <% If recordset("database") = 3 Then Response.Write "Checked" %> name="R1">


* gorgi_19 kruipt weer over de schutting heen....
De pagina in kwestie benadert de database nog niet.
Dit gebeurt in de ASP file die hierop volgt.

(*) gebruiker selecteert radio "Database1" ---> POST in results1.asp ---> haalt data uit database 1
(*) gebruiker selecteert radio "Database2" ---> POST in results2.asp ---> haalt data uit database 2
(*) gebruiker selecteert radio "Database3" ---> POST in results3.asp ---> haalt data uit database 3

Hoop dat het zo iets duidelijker is.

[ Voor 22% gewijzigd door STING op 24-06-2003 10:48 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Ow, wil je dat....

Die code mag je zelf bedenken.. Hint:

Request.Form

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22-08 02:40

Pelle

🚴‍♂️

-> P&W

(moest van gorgi_19 ;))

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

(*) gebruiker selecteert radio "Database1" ---> POST in results1.asp ---> haalt data uit database 1
(*) gebruiker selecteert radio "Database2" ---> POST in results2.asp ---> haalt data uit database 2
(*) gebruiker selecteert radio "Database3" ---> POST in results3.asp ---> haalt data uit database 3
Dit zal alleen met JS lukken (dus bij het selecteren van V1 --> posten naar results1.asp etc...
Maar waarom maak je gewoon niet één .asp pagina waar je het formulier naar post en vervolgens op basis van het geselecteerde item de corresponderende acties uitvoert :?
ASP:
1
2
3
4
5
If Request.Form("R1") ="V1" Then
'acties voor database 1
ElseIf Request.Form("R1") ="V2" Then
'acties voor database 2
enz..

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

DeverauX schreef op 24 June 2003 @ 11:11:
[...]

Dit zal alleen met JS lukken (dus bij het selecteren van V1 --> posten naar results1.asp etc...
Maar waarom maak je gewoon niet één .asp pagina waar je het formulier naar post en vervolgens op basis van het geselecteerde item de corresponderende acties uitvoert :?
ASP:
1
2
3
4
5
If Request.Form("R1") ="V1" Then
'acties voor database 1
ElseIf Request.Form("R1") ="V2" Then
'acties voor database 2
enz..
Je zou natuurlijk voor een ranzige tussen oplossing kunnen zoeken, weet er al twee.

1. Plaats alles in een url en lees het dan op de goede pagina uit. dan is het wel met javascript geregeld.. met allemaal if statements..

2. Post gewoon naar een extra pagina er tussenin waarin je alles uitleest en dan een body onload maakt die meteen een submit doet.. en dan heb je natuurlijk allang de goede pagina in de action staan.. en met allemaal hidden fields heb je dan ook de waardes in een request.Form

Waarom ik die quote deed weet ik niet meer, maar mijn 2e oplossing is hetzelfde als die van DeverauX geloof ik :) lezen jasper lezen |:(

[ Voor 14% gewijzigd door Jaspertje op 24-06-2003 11:34 ]


  • STING
  • Registratie: Juni 2000
  • Laatst online: 14-08 12:46
gorgi_19 schreef op 24 June 2003 @ 10:49:
Ow, wil je dat....

Die code mag je zelf bedenken.. Hint:

Request.Form
De enige manier die ik kan bedenken om de POST action te beinvloeden is:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
<%
dim selectdb
selectdb=Request.Form("selectdb")
%>
..
..
<form method="POST" action="<% Response.Write(selectdb) %>">
..
..
<input type="radio" checked name="selectdb" value="swdb.asp">Software database</input>
..
..


Echter geeft deze:
HTTP Error 405
405 Method Not Allowed

The method specified in the Request Line is not allowed for the resource identified by the request. Please ensure that you have the proper MIME type set up for the resource you are requesting.

[ Voor 9% gewijzigd door STING op 24-06-2003 11:37 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

als je eens die () weghaalt.. Dat hoeft niet, net getest
dus response.write selectdb

nog korter is trouwens <%=selectdb%>

[ Voor 22% gewijzigd door Jaspertje op 24-06-2003 11:41 ]


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Je zou natuurlijk voor een ranzige tussen oplossing kunnen zoeken, weet er al twee.
Waarom zou je voor een ranzige tussenoplossing kiezen als er goede alternatieven zijn :?
Nadeel van je tussenoplossing is dat het onnodig meer belasting legt op de server en daarnaast ook het dataverkeer verhoogd! Jou oplossing is dan ook niet gelijk aan die van mij ;)
De enige manier die ik kan bedenken om de POST action te beinvloeden is:
De gebruiker moet hiervoor dus twee handelingen verrichten! (Eerst het form waarmee je de gegevens over de db wilt ophalen en vervolgens het eigenlijke formulier. )
Je moet het gewoon oplossen met enkele conditionale statements op de waarde van je Request.Form!

Edit:
Daarnaast is de juiste syntax voor hetgeen je wilt:
ASP:
1
<form method="POST" action="result<%= selectdb %>.asp">

[ Voor 13% gewijzigd door DeverauX op 24-06-2003 11:44 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

DeverauX schreef op 24 June 2003 @ 11:41:
Daarnaast is de juiste syntax voor hetgeen je wilt:
ASP:
1
<form method="POST" action="<%= selectdb %>">
Maar dan moet ie dus wel al weten welke radio button geselecteerd is.. Dus moet ie een post gedaan hebben voordat de TS deze action kan uitvoeren. En of je dan post naar je eigen pagina, of naar een nieuwe..?? wots the difference (of scheelt dat wel in serverload? want dat weer ik niet)

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

DeverauX schreef op 24 June 2003 @ 11:11:
[...]
ASP:
1
2
3
4
5
If Request.Form("R1") ="V1" Then
'acties voor database 1
ElseIf Request.Form("R1") ="V2" Then
'acties voor database 2
enz..
Alles dus gewoon vanuit één pagina doen :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

DeverauX schreef op 24 juni 2003 @ 11:11:
ASP:
1
2
3
4
5
If Request.Form("R1") ="V1" Then
'acties voor database 1
ElseIf Request.Form("R1") ="V2" Then
'acties voor database 2
enz..
Dan toch werkelijk 2, want die request.Form komt uit een vorige pagina..

Misschien trouwens dat de TS eens moet gaan nadenken over een andere manier, door die drie pagina's same te voegen naar 1 pag. en daar met een Case of If statement te gaan werken

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Dan toch werkelijk 2, want die request.Form komt uit een vorige pagina..
Ja logisch, maar wat ik bedoel is dat de TS niet met result1.asp, result2.asp enz moet gaan werken ;)
Waarom denk je dat conditional statements anders zijn bedacht? Om onder andere afhankelijk van de keuze van een gebruiker verschillende acties uit te voeren? Juist! :Y)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

DeverauX schreef op 24 June 2003 @ 11:55:
[...]

Ja logisch, maar wat ik bedoel is dat de TS niet met result1.asp, result2.asp enz moet gaan werken ;)
Waarom denk je dat conditional statements anders zijn bedacht? Om onder andere afhankelijk van de keuze van een gebruiker verschillende acties uit te voeren? Juist! :Y)
Dus we waren het wel eens over de manier, alleen niet hoe.. nou maar hopen dat de TS er iets aan heeft :P

Verwijderd

Je zou zelfs via Jscript de action kunnen zetten.

function blabla (){
document.form1.action="....asp";
document.form1.submit();
}

En dit hang je dan aan de onclick of zo van de radio button, je zou ook 1 algemene functie kunnen pakken die dan de geselecteerde radiobutton uitleest.

Maar het is natuurlijk mooier om het serverside te doen.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 21:53
Nog een quick 'n dirty alternatief:
ASP:
1
2
3
4
5
6
7
If Request.Form("R1") ="V1" Then
  Response.Redirect "result1.asp"
ElseIf Request.Form("R1") ="V2" Then
  Response.Redirect "result2.asp"
ElseIf Request.Form("R1") ="V3" Then
  Response.Redirect "result3.asp"
End If

Roomba E5 te koop


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

sig69 schreef op 24 June 2003 @ 15:43:
Nog een quick 'n dirty alternatief:
ASP:
1
2
3
4
5
6
7
If Request.Form("R1") ="V1" Then
  Response.Redirect "result1.asp"
ElseIf Request.Form("R1") ="V2" Then
  Response.Redirect "result2.asp"
ElseIf Request.Form("R1") ="V3" Then
  Response.Redirect "result3.asp"
End If
Niet helemaal want waar haal ik nu alle waardes vandaan die ik in het form heb neergezet??

  • STING
  • Registratie: Juni 2000
  • Laatst online: 14-08 12:46
He he, ik heb het eindelijk zoals ik het wil. :)
Zie onderstaande lap code.

Ja, het is heel omslachtig misschien, maar ik ben dan ook een beginnende web designer ;)


Java:
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
<script LANGUAGE="javascript">
<!--


function uncheck1 (){
    document.form1.kb.checked = false;
    document.form1.spdb.checked = false;
}


function uncheck2 (){
    document.form1.swdb.checked = false;
    document.form1.spdb.checked = false;
}

function uncheck3 (){
    document.form1.swdb.checked = false;
    document.form1.kb.checked = false;
}


function selectdb (){
    if (document.form1.swdb.checked == true) { document.form1.action="swdb.asp"; }
    if (document.form1.kb.checked == true) { document.form1.action="kb.asp"; }
    if (document.form1.spdb.checked == true) { document.form1.action="spdb.asp"; }
    document.form1.submit();
}


// -->
</script>
..
..
<form name="form1" method="POST" action="swdb.asp">
<input type="radio" checked name="swdb" value="swdb" onClick="uncheck1()">Software Database</input>
<input type="radio" name="kb" value="kb" onClick="uncheck2()">Knowledge base</input>
<input type="radio" name="spdb" value="spdb" onClick="uncheck3()">Procedures/Services database</input>
<input name="Query" size="30">
<input type="submit" value="Zoek" onClick="selectdb()">
</form>


Bedankt voor jullie hulp!

[ Voor 16% gewijzigd door STING op 24-06-2003 16:10 ]


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Niet helemaal want waar haal ik nu alle waardes vandaan die ik in het form heb neergezet??
Dat hoeft ook niet aangezien elke pagina nu voor een bepaalde actie staat. (Dit is ook hoe de TS het probeert op te lossen) :)

Edit:
STINGnl schreef op - 24-06-2003 16:10
Ja, het is heel omslachtig misschien, maar ik ben dan ook een beginnende web designer
Als je beginnend bent lijkt het mij raar om dan de meest omslachtige manier te kiezen :?
Daarnaast is je gekozen oplossing ook minder veilig dan het gewoon serverside op te lossen.
Als dit is waar je voor kiest dan moet je dat zelf weten, maar er zijn je verschillende (betere) alternatieven aangeboden. :)

[ Voor 51% gewijzigd door DeverauX op 24-06-2003 16:23 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

<input type="radio" value="V1" checked name="R1">Software database
<input type="radio" value="V1" name="R1">Knowledge base
<input type="radio" value="V1" name="R1">Procedures/Services database

-> Dat is drie keer hetzelfde 8)

Wat dacht je hiervan:
HTML:
1
2
3
4
5
<form method="post" action="zoeken.asp">
<input type="radio" value="db1.mdb" checked name="R1">Software database
<input type="radio" value="db2.mdb" name="R1">Knowledge base
<input type="radio" value="db3.mdb" name="R1">Procedures/Services database
</Form>

En zoeken.asp
ASP:
1
2
3
4
5
6
7
8
9
10
11
'We gaan ervan uit dat je 3 databases drie verschillende types query's nodig hebben!
<%
dim uwen dataset...
If  Request.form("R1") = "db1.mdb" Then
...
ElseIf Request.form("R1") = "db2.mdb...
...

End If
' hier krijg je dan info uit een van de db's dmv een datareader daar doe je dan mee wat je wilt!
%>



De code voor db aan te roepen enzo moet je zelf maar verder verfijnen...


Oh ja google: http://www.learnasp.com/learn/formradio.asp

[ Voor 48% gewijzigd door Verwijderd op 24-06-2003 16:30 . Reden: *aspfreakout was beetje lui ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Nog een klein dingetje wat je vast nog meer tegen gaat komen,

Gebruik code maar een keer. De bovenste drie functies done alle drie hetzelfde.

Alleen is de naam elke keer anders.. Je zou dat ook zo kunne oplossen

ASP:
1
2
3
4
function uncheck1 (a, b){ 
    eval('document.form1.'+a+'.checked = false'); 
    eval(document.form1.'+b+'.checked = false'); 
} 

en dan kan je voor elke radio dezelfde functie gebruiken, alleen met twee andere waardes. Het voordeel hiervan is, dat je dan maar een keer code hoeft aan te passen ipv 3 keer

-disclamer- Hij is niet getest!!

  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06-2025
HTML:
1
<form name="searchForm" method="POST" action="results1.asp">


Een clientside javascriptje om je form action te beinvloeden:
JavaScript:
1
2
3
function SelParser(strAction) {
    document.searchForm.action = strAction
}


HTML:
1
2
3
<input type="radio" value="V1" checked name="R1" onClick="javascript: SelParser('results1.asp')">Software database
<input type="radio" value="V1" name="R1" onClick="javascript: SelParser('results2.asp')">Knowledge base
<input type="radio" value="V1" name="R1" onClick="javascript: SelParser('results3.asp')">Procedures/Services database


Ik weet niet zeker of je het onClick of het onChange event moet hebben, dat mag je lekker zelf uitzoeken :)

Standaard wordt dus naar result1.asp gepost. Zodra je op een andere radiobutton klikt wordt de action property van de form tag veranderd waardoor het naar een andere asp pagina gepost wordt zodra je form gesubmit wordt.

Hope this helps.

[ Voor 15% gewijzigd door Theguide op 25-06-2003 09:44 ]

Fuck me if I'm wrong, but isn't your name Gretchen?

Pagina: 1