Avatar billede pyrus-o2 Nybegynder
21. november 2000 - 06:42 Der er 9 kommentarer

Tæl antal poster

Hejsan,

Der er nogen der har spurgt om noget tilsvarende, men jeg synes ikke jeg blev særligt meget klogere derfor følgende:

Jeg har en side med 4 spørgsmål der bliver hentet fra en db. Disse 4 spørgsmål har forskelligt antal svarmuligheder, også hentet fra db.
Den side er som sådan OK, nu skal jeg ha\' samlet de svar folk giver på spørgsmålene op, og talt hvor mange de havde svaret korrekt på.
For hvert korrekt svar får de nemlig 1 lod som skal lægges i en tabel i db.
Mit problem er hvordan f..... jeg får talt antallet af korrekte svar.
Source kan lægges op senere hvis det er nødvendigt.
Avatar billede tdaugaard Nybegynder
21. november 2000 - 06:49 #1
Så du skal have talt hvor mange \"lodder\" hver bruger har ?
I den tabel med dine \"lodder\" siger vi at du har to felter. Et \"navn\" og et \"lodid\" (tekst & tal respektivt)

Lad os så sige at hver gang en bruger gætter rigtigt så lægges der en post i den tabel med navnet på brugeren og et lodid der f.eks. refererer til hvilket spørgsmål de har fået loddet for (hvis du f.eks. har et ID på hvert spørgsmål)

Så kan du tælle posterne for en bruger ved at bruge flg. SQL query:
Rs er et recordset og conn en connection til din DB.

strNavn = \"tdaugaard\" \'eksempel
sql = \"SELECT COUNT(*) AS lodder FROM din_lod_tabel WHERE navn=\'\" & strNavn & \"\';\"
Set Rs = Conn.Execute(sql)
intLodder = CInt(Rs(\"lodder\"))
Set Rs = Nothing

så har du antal poster for den bruger.
Avatar billede pyrus-o2 Nybegynder
21. november 2000 - 06:57 #2
Nej jeg skal ikke ha\' talt antallet af lodder i første omgang, jeg skal ha\' talt antal korrekte svar brugeren har afgivet.
eks.
sp1 sv2
sp2 sv3
sp3 sv4
sp4 sv2
hvis nu de korrekte svar på sp1 - 4 er 2222 har brugeren altså kun 2 rigtige, for hvert af dem skal han/hun ha\' 1 lod.
Mit spørgsmål går derfor i første omgang ud på at tælle antallet af korrekte svar
Avatar billede tdaugaard Nybegynder
21. november 2000 - 07:01 #3
Okay, den fatter jeg ikke rigtigt ..
Avatar billede pyrus-o2 Nybegynder
21. november 2000 - 07:23 #4
Altså
Jeg har en form på side 1, med 4 spørgsmål, til hvert spørgsmål er der et antal valgmuligheder. Når man submitter skal side 2 tjekke besvarelserne mod databasen, og tælle antallet af korrekte svar.
Det er her filmen knækker
Avatar billede tdaugaard Nybegynder
21. november 2000 - 08:17 #5
Nåå på den måde.. så tror jeg, jer er med :)

Lidt kode fra din side ville være godt så vi/jeg kan se hvad det drejer sig om (tabel navne, felter) så vil det blive lidt nemmere at lave en løsning der passer til din kode.

Men lidt kode her ville nok være (okay, lidt meget *g*):

side1.asp:

<form action=\"side2.asp\" method=\"post\">
<input type=\"hidden\" name=\"spmID1\" value=\"9\">
<input type=\"hidden\" name=\"spmID2\" value=\"27\">
A. Hvad er Eksperten.dk ?
  1. <input type=\"radio\" name=\"spm1\" value=\"0\">Et IT spørgeforum<br>
  2. <input type=\"radio\" name=\"spm1\" value=\"1\">Et online live mudderkastnings show

B. Hvor mange hits har Jubii! ugentligt ?
  1. <input type=\"radio\" name=\"spm2\" value=\"0\">327,5<br>
  2. <input type=\"radio\" name=\"spm2\" value=\"1\">3.115.457

<input type=\"submit\" value=\"Næste\">
</form>


side2.asp:

<%
dim Svar(1)
dim IDs(1)

Svar(0) = CInt(Request(\"spm1\"))
Svar(1) = CInt(Request(\"spm2\"))
IDs(0) = CInt(Request(\"spmID1\"))
IDs(1) = CInt(Request(\"spmID2\"))

set rs = server.createobject(\"adodb.recordset\")
set conn = server.createobject(\"adodb.connection\")

sql=\"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"dindb.mdb\")
conn.open sql

for i=0 to ubound(svar)
  sql=\"SELECT * FROM minesvar WHERE spmid=\" & IDs(i) & \" AND svar=\" & Svar(i) & \";\"
  set rs = conn.execute(sql)

  if not (rs.bof and rs.eof) then svar(i)=True else svar(i) = false
next

set rs=nothing
conn.close: set conn=nothing

for x=0 to ubound(ids)
  response.write \"Spørgsmål \" & x+1 & \"<br>

  for y=0 to ubound(svar)
    if svar(y)=true then strSvar=\"Korrekt\" else strSvar = \"Forkert\"
    response.write y+1 & \". \" & strSvar
  next

  response.write \"<p>\"
next
%>


det er IKKE testet da jeg ikke har en database jeg lige kan bruge, og jeg gider ikke sidde og lave en selv.
Avatar billede pyrus-o2 Nybegynder
21. november 2000 - 08:54 #6
Jamen så må jeg jo hellere lige teste dit kodeværk.
Avatar billede pyrus-o2 Nybegynder
21. november 2000 - 09:24 #7
En mindre detalje er at spørgsmålene og deres svarmuligheder også ligger i databasen.
Nedenstående er source for siden med spørgsmål:

dim QuestionID
dim WeekNo
    \'Creating the DBconnection
    set dbconn=server.CreateObject(\"ADODB.Connection\")
    \'Opens the connection
    dbconn.Open \"Database\"

    set rsWeek = server.CreateObject(\"ADODB.Recordset\")
    strSQL_Week =\"SELECT WeekNo from tbl_Weeks Where Date=\'\"&date()&\"\'\"
    rsWeek.Open strSQL_Week,dbconn
    WeekNo=rsWeek(\"WeekNo\")
   
    set rsQuestions = server.CreateObject(\"ADODB.Recordset\")
    strSQL_Questions =\"SELECT * from tbl_Questions Where QuestionWeek=\'\" & WeekNo &\"\'\"
   
   
   
    \'Collecting Questions
   
    rsQuestions.Open strSQL_Questions,dbconn

    QuestionID = rsQuestions(\"QuestionID\")
    Response.write \"<form name=x-mas method=post action=AnswerIt.asp>\"
    Response.write \"<table border=1>\"
   
    do until rsQuestions.EOF

    Response.write \"<tr><td colspan=2>\" & rsQuestions(\"QuestionTxt\") & \"<input type=Hidden value=\"& rsQuestions(\"QuestionID\") & \" name=QuestionID></td></tr>\"

    set rsAnswers = server.CreateObject(\"ADODB.Recordset\")
    strSQL_Answers =\"SELECT * from tbl_Answers Where question_ID = \'\" & QuestionID &\"\' order by PossibleAnswerNo\"
                   

    rsAnswers.Open strSQL_Answers,dbconn

        do until rsAnswers.EOF

        Response.write \"<tr><td><input type=radio value=\"& rsAnswers(\"PossibleAnswerNo\") & \" name=\" & rsQuestions(\"QuestionNo\") & \">&nbsp;&nbsp;&nbsp;\" & rsAnswers(\"PossibleAnswerNo\") & \"</td><td>\" & rsAnswers(\"PossibleAnswerTxt\") & \"</td></tr>\"
       
        rsAnswers.MoveNext

        QuestionID = rsQuestions(\"QuestionID\")+1
        Loop
       
    rsQuestions.MoveNext
   
    Loop
\' commented out by KK
   
    \'Collect Userinformation
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"Fornavn<br></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"<input type=text name=UserFirstName></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"Efternavn<br></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"<input type=text name=UserLastName></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"Firma<br></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"<input type=text name=UserCompany></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"Email<br></td></tr>\"
\'    Response.Write \"<tr><td colspan=2>\"
\'    Response.Write \"<input type=text name=UserEmail></td></tr>\"
    Response.Write \"<tr><td colspan=2>\"
    Response.Write \"<input type=reset name=reset value=Slet alt>&nbsp;&nbsp;&nbsp;&nbsp;<input type=Submit name=submit value=Besvar></td></tr>\"
    Response.Write \"<input type=hidden name=WeekNo value=\"& rsWeek(\"WeekNo\") &\">\"
    Response.write \"</form>\"
    Response.write \"</table>\"

    rsQuestions.Close
   
    dbconn.Close
   
%>

databasen har 3 tabeller tbl_weeks som indeholder datoer og ugespecifikationer.
tbl_questions med spørgsmålene og de korrekte svar samt tbl_Answers hvor de forskellige svarmuligheder til hvert spørgsmål ligger
Avatar billede pyrus-o2 Nybegynder
21. november 2000 - 09:25 #8
Det nederste med collect user inf etc. skal egentlig væk så ignorer bare det
Avatar billede tdaugaard Nybegynder
21. november 2000 - 11:40 #9
jeg kigger på det lidt senere .. jeg skal lige have min nattesøvn først ;o)
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