frossensofa Skrevet 8. november 2004 Del Skrevet 8. november 2004 Hei, jeg har et vrient problem og lurer på om det er en guru der ute kan hjelpe meg... Jeg lager en teoriprøve for bil og får problemer med resultatet. Når en bruker tar prøven og bare velger et svaralternativ så går det greit(da får jeg ut riktig svar), men når brukeren velger flere alternativer så blir resultatet feil fordi: Problem: Når jeg sammenligner det brukeren har svart med de svaralternativene som er riktig går det greit når det ikke er fler alternativ til et spm. men når det er fler alternativ til et spm så sammenligner den bare med det første alternativet brukeren har svart fordi det er en while-løkke inni for-løkken. Så det jeg ønsker er at svaralternativet brukeren har svart endrer seg ved hver svartalternativ i while-løkken. Det er kanskje lettere å se på koden hvis dette blir litt uklart, du kan også se på websiden bill.hive.no. brukernavn og passord er test eller en av brukerene i toppti lista. sub Page_Load(sender as Object, e as EventArgs) if session("innLoggetBruker") = 0 then response.redirect("loginelev.aspx") end if hentSvart() end sub function hentSvart() dim liste as Arraylist liste = new Arraylist dim sjekkSpm as Arraylist sjekkSpm = new Arraylist dim sjekkSvar as Arraylist sjekkSvar = new Arraylist dim sjekkValgt as Arraylist sjekkValgt = new Arraylist dim sum = 0 dim HentSpmID dim i dim HentSpm dim sjekk as boolean dim HentRiktigSvar dim DBforbindelse as OleDbConnection dim DBkommando as OleDbCommand dim Leser as OleDbDataReader dim fstring as string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath("oblig3DB.mdb") DBforbindelse = new OleDbConnection(fstring) DBforbindelse.open() Dim sql as string = "select valgtSvarID from TblAvgittSvar where brukerID=" & session("innLoggetBruker") & "" DBkommando = new OleDbCommand(sql,DBforbindelse) Leser = DBkommando.ExecuteReader while Leser.Read liste.add(Leser("valgtSvarID")) 'henter ut svaralt brukeren har valgt og legger det i en liste end while Leser.Close() DBforbindelse.Close() for i=0 to liste.count-1 response.write("<b>skriver ut alt. brukeren har valgt " & liste(i) & "</b><br>") DBforbindelse.open() sql = "SELECT spmID FROM TblSvar where svarID=" & liste(i) & "" DBkommando = new OleDbCommand(sql,DBforbindelse) Leser = DBkommando.ExecuteReader while Leser.Read HentSpmID = Leser("spmID") 'henter ut spmID'n til de valgene brukeren har tatt end while Leser.Close() DBforbindelse.Close() DBforbindelse.open() sql = "SELECT spm FROM TblSpm WHERE spmID = " & HentSpmID & "" 'and riktigsvar=true" DBkommando = new OleDbCommand(sql,DBforbindelse) Leser = DBkommando.ExecuteReader while Leser.Read HentSpm = Leser("spm") 'henter ut spm(text) til spmID'n som ble hentet over end while Leser.Close() DBforbindelse.Close() DBforbindelse.open() sql = "SELECT * FROM TblSvar WHERE spmID = " & HentSpmID & "" DBkommando = new OleDbCommand(sql,DBforbindelse) Leser = DBkommando.ExecuteReader while Leser.Read HentRiktigSvar = Leser("riktigSvar") 'henter ut svaralt til spm og om det er riktig if sjekk = false and not sjekkSpm.contains(HentSpm) then Label1.text +=("<br><b>" & HentSpm & "</b><br>") sjekkSpm.add(HentSpm) sjekk = true end if if HentRiktigSvar = true if liste(i) = Leser("svarID") and not sjekkSvar.contains(Leser("svarID")) then Label1.text +=(Leser("svarID") & "- <b>" & Leser("Svar") & "</b><font color=green> **Riktig** </font><br>") sum = sum + 1 sjekkSvar.add(Leser("svarID")) response.write("Riktig og valgt. " & liste(i) & " , " & Leser("svarID") & "<br>") elseif liste(i) <> Leser("svarID") and not sjekkSvar.contains(Leser("svarID")) then Label1.text +=(Leser("svarID") & "- <b>" & Leser("svar") & "</b><font color=red> **Feil - ikke valgt** </font><br>") sum = sum - 1 sjekkSvar.add(Leser("svarID")) response.write("Riktig men ikke valgt. " & liste(i) & " , " & Leser("svarID") & "<br>") end if sjekkValgt.add(liste(i)) elseif HentRiktigSvar = false if liste(i) = Leser("svarID") and not sjekkSvar.contains(Leser("SvarID")) then Label1.text +=(Leser("svarID") & "- " & Leser("Svar") & "<font color=red> **Feil** </font><br>") sjekkSvar.add(Leser("svarID")) sum = sum -1 response.write("Feil og valgt. " & liste(i) & " , " & Leser("svarID") & "<br>") elseif liste(i) <> Leser("svarID") and not sjekkSvar.contains(Leser("svarID")) Label1.text +=(Leser("svarID") & "- " & Leser("Svar") & "<br>") sjekkSvar.add(Leser("svarID")) response.write("Feil og ikke valgt. " & liste(i) & " , " & Leser("svarID") & "<br>") end if end if end while Leser.Close() DBforbindelse.Close() sjekk = false next if sum < 15 then Label3.text +=("Du har ikke bestått, du fikk " & sum & " av 20 mulige") else Label3.text += ("Du har bestått, du fikk " & sum & " av 20 mulige") end if end function Takker for all hjelp! Lenke til kommentar
alftore Skrevet 8. november 2004 Del Skrevet 8. november 2004 Burde være enkelt, men hvordan ser databasestrukturen ut? Lenke til kommentar
frossensofa Skrevet 9. november 2004 Forfatter Del Skrevet 9. november 2004 er der den Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå