Avatar billede flashit Nybegynder
12. oktober 2002 - 22:48 Der er 16 kommentarer og
1 løsning

radiobutton's værdig

Hej E.

Jeg prøver at lave et lille spil, hvor man skal svare på et spørgsmål. Der er så 3 svar muligheder. Ud for hver svarmulighed er der en radiobutton.

Hver radiobutton har en value. (Eks. 1)

Når man så vælger et svar og klikker på en svar knap gå den til en anden side hvor den skal finde ud af om ens value er det rigtige.

Jeg har en database som indeholder:

Spørgsmål, (tekst)
svar1, (tekst)
svar2, (tekst)
svar3, (tekst)
RigtigtSvar, (Nummer)

Men hvordan kan jeg få den til at overføre og sammenligne det valgte svar med det rigtige i databasen?

Jeg vil mene at man kan overføre en værdig på denne måde:

<form name=”form” methode=”post” action=”svar.asp?RigtigtSvar=”value”>
Avatar billede eagleeye Praktikant
12. oktober 2002 - 23:14 #1
Du kan give hver radio knap en value 1,2,3. Det skal så havde samme navn så kan du hendte den med Request.Form("navnet")  eks:

Spørgsmål: Hvad er 2+2?
<input type="radio" name="svar" value="1">Det er 3
<input type="radio" name="svar" value="2">Det er 4
<input type="radio" name="svar" value="3">Det er 5


På siden som tjekker svart..:

svar = Request.form("svar")
Hvis du så hender svart til spørgsmålet i databasen..:
SQL = "SELECT RigtigtSvar FROM tabel WHERE id = xxx"
Set rs = Conn.Execute(SQL)

if Cstr(svar) = CStr(rs("RigtigtSvar")) then
  Response.write "Du har svaret rigtigt."
else
  Response.write "Du har svaret forkert!!"
end if
Avatar billede flashit Nybegynder
14. oktober 2002 - 15:38 #2
Hej Eagleeye

Efter 2 dage må jeg desvære give op, og spørge om hjælp igen. Jeg troede ellers at jeg kunne gennemskue dit gode svar.

Kan du se hvad jeg gør forkert her:

Startside.asp
<html>
<head>
<title>Nyhedsbrev</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css"> 

</style>

</head>

<body bgcolor="#FFFFFF" text="#000000">
<p>
  <%
 
  dim idvar
strconnect="Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("spoergsmaal.mdb")
SET DbObj=Server.CreateObject ("ADODB.Connection")
DbObj.Open strconnect
SET tabel=DbObj.Execute("SELECT TOP 1 * FROM Spoergsmaal ORDER BY Rnd([ID]) ")


%>
<%idvar = tabel("ID") %>

  <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">
  <% if tabel.EOF then %>
  Der er endnu ikke skrevet nogle indlæg.<br>
  <% else %>
  <% while not tabel.EOF %>
  </font></p>

<p><%=tabel("SPG")%> </p>

<form name="svar" method="post" action="svar.asp">
  <table border="0">
    <tr>
      <td width=""><%=tabel("Svar1")%></td>
      <td><input type="radio" name="svar" value="1"></td>
    </tr>
    <tr>
      <td width=""><%=tabel("Svar2")%></td>
      <td><input type="radio" name="svar" value="2"></td>
    </tr>
    <tr>
      <td width=""><%=tabel("Svar3")%></td>
      <td><input type="radio" name="svar" value="3"></td>
    </tr>
  </table>
  <p>
    <input type="submit" name="Submit" value="Submit" >
  </p>
  </form>
<p><br>
  <br>
</p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">
  <%tabel.movenext %>
  <% wend %>
  <%end if%>
  <%tabel.close%>
  <%DbObj.close%>
  </font></p>
</body>
</html>


Svar.asp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
svar = Request.form("svar")

<%
strconnect="Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("spoergsmaal.mdb")
SET DbObj=Server.CreateObject ("ADODB.Connection")
DbObj.Open strconnect
SET tabel=DbObj.Execute("SELECT Rigtigt FROM Spoergsmaal WHERE id = idvar")
%>


Set rs = Conn.Execute(SQL)

if Cstr(svar) = CStr(rs("Rigtigt")) then
  Response.write "Du har svaret rigtigt."
else
  Response.write "Du har svaret forkert!!"
end if

</body>
</html>

Der kommer gerne flere Points på bordet, da jeg meger gerne vil have løst dette problem.
Avatar billede eagleeye Praktikant
14. oktober 2002 - 21:46 #3
du skal i din form gemme den ID som spørgsmålet har så du kan finde svaret på det rigtige spørgsmål, det kan gøres ved at lave et hidden felt i formen eks:

<form name="svar" method="post" action="svar.asp">
<input type="hidden" name="id" value="<%=tabel("ID")%>">


Og på svar siden skal du så hendte ID lige som du hendter svaret med request.form("svar") det skal så lige inden for <% ... %> og ikke som nu hvor det står lige efte <body>

<body>
<%
svar = Request.form("svar")
id = Request.form("id")


Din SQL sætning skal ændre fra:
SET tabel=DbObj.Execute("SELECT Rigtigt FROM Spoergsmaal WHERE id = idvar")

Til:
SET tabel=DbObj.Execute("SELECT Rigtigt FROM Spoergsmaal WHERE id = " & id)
Avatar billede flashit Nybegynder
14. oktober 2002 - 22:45 #4
Det er bare kanon hjælp........ Mange TAK

Der er bare et lille problem med sql sætningen, jeg får følgende fejl:

Technical Information (for support personnel)

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id ='.
/Spørgeskema/svar.asp, line 16


Browser Type:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Page:
POST 25 bytes to /Spørgeskema/svar.asp

POST Data:
id=3&svar=1&Submit=Submit
Avatar billede eagleeye Praktikant
14. oktober 2002 - 22:53 #5
Prøv lige at vise kode for svar.asp igen.
Avatar billede flashit Nybegynder
14. oktober 2002 - 23:02 #6
Sorry, jeg havde misset en <%, som du skrev skulle være efter <body>.


Men der kommer stadig en fejl:

The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.

Error Type:
Provider (0x80004005)
Unspecified error
/Spørgeskema/svar.asp, line 16


Browser Type:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Page:
POST 25 bytes to /Spørgeskema/svar.asp

POST Data:
id=3&svar=2&Submit=Submit 


Her er koden til svar.asp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
svar = Request.form("svar")
id = Request.form("id")


strconnect="Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("spoergsmaal.mdb")
SET DbObj=Server.CreateObject ("ADODB.Connection")
DbObj.Open strconnect
SET tabel=DbObj.Execute("SELECT Rigtigt FROM Spoergsmaal WHERE id = " & id)
%>


Set rs = Conn.Execute(SQL)

if Cstr(svar) = CStr(rs("Rigtigt")) then
  Response.write "Du har svaret rigtigt."
else
  Response.write "Du har svaret forkert!!"
end if

</body>
</html>
Avatar billede eagleeye Praktikant
14. oktober 2002 - 23:05 #7
den sidste %> skal helt ned før </body>. Alt ASP kode skal være mellem en start <% og en slut %> asp-kode "tag"/afgrænsning.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
svar = Request.form("svar")
id = Request.form("id")


strconnect="Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("spoergsmaal.mdb")
SET DbObj=Server.CreateObject ("ADODB.Connection")
DbObj.Open strconnect
SET tabel=DbObj.Execute("SELECT Rigtigt FROM Spoergsmaal WHERE id = " & id)

Set rs = Conn.Execute(SQL)

if Cstr(svar) = CStr(rs("Rigtigt")) then
  Response.write "Du har svaret rigtigt."
else
  Response.write "Du har svaret forkert!!"
end if
%>

</body>
</html>
Avatar billede flashit Nybegynder
14. oktober 2002 - 23:16 #8
Jeg er ked af det, men den er der ikke helt endnu.

Der er efter sigende en fejl i nedenstående linie:
DbObj.Open strconnect

Provider (0x80004005)
Avatar billede eagleeye Praktikant
14. oktober 2002 - 23:19 #9
Er det ikke den samme database i begge tilfælde ?? og samme connection stregn. Prøv evt at kopier disse 3 linier fra den anden fil ind i svar.asp:

strconnect="Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("spoergsmaal.mdb")
SET DbObj=Server.CreateObject ("ADODB.Connection")
DbObj.Open strconnect
Avatar billede flashit Nybegynder
14. oktober 2002 - 23:32 #10
Jo, det er den samme database.
Jeg har prøvet at kopiere connection string over fra den føreste fil, da jeg ved at denne virker til svar.asp, men jeg får stadig den fejl.

Det er også underligt. Når jeg trykker refresh kommer den med denne fejl:
object required: "
/spørgeskema/svar.asp, linie 19

Som er denne linie:
Set rs = Conn.Execute(SQL)

Men den har stadig variablerne "med" (id=3&svar=3&submit=submit)
Avatar billede flashit Nybegynder
14. oktober 2002 - 23:33 #11
Jeg er ked af, at jeg er så dårlig, men det vil bare være kanon fedt hvis det kunne komme til at virke.
Avatar billede eagleeye Praktikant
14. oktober 2002 - 23:35 #12
arh det så jeg ført nu... I den linie hedder connection Conn og i der hvor connection laves hedder den DbObj

Du har faktisk en linie for meget denne kan slettes:

Set rs = Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
14. oktober 2002 - 23:36 #13
Denne linie

if Cstr(svar) = CStr(rs("Rigtigt")) then

Rettes til:

if Cstr(svar) = CStr(tabel("Rigtigt")) then

Til at passe med navnet på dit recordset.
Avatar billede eagleeye Praktikant
14. oktober 2002 - 23:38 #14
For en god orden skyld bør man altid lukke for sine recordset og connections efter man har brugt dem så du bør til føje disse linier efter linien end if


table.Close
DbObj.Close
Set table = Nothing
Set DbObj = Nothing
Avatar billede eagleeye Praktikant
14. oktober 2002 - 23:44 #15
Så svar.asp bliver, efter jeg har rettet et par stavefejl jeg have lavet i koden i de 3 sidste kommentare:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
svar = Request.form("svar")
id = Request.form("id")

strconnect="Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("spoergsmaal.mdb")
SET DbObj=Server.CreateObject ("ADODB.Connection")
DbObj.Open strconnect
SET tabel=DbObj.Execute("SELECT Rigtigt FROM Spoergsmaal WHERE id = " & id)

if Cstr(svar) = CStr(tabel("Rigtigt")) then
  Response.write "Du har svaret rigtigt."
else
  Response.write "Du har svaret forkert!!"
end if

tabel.Close
DbObj.Close
Set tabel = Nothing
Set DbObj = Nothing
%>

</body>
</html>
Avatar billede flashit Nybegynder
14. oktober 2002 - 23:59 #16
Det er med et kæmpe TAK, jeg giver dig dine points.

Det har her været en utrolig hjælp :-)
Avatar billede flashit Nybegynder
15. oktober 2002 - 00:01 #17
skal være :
Du har været en utrolig hjælp :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester