28. maj 2003 - 22:23Der er
15 kommentarer og 1 løsning
Poll I ASP
Hejsa,
Jeg er ved at lave et afstemnings system... Og det skal laves på en lidt mærklig måde :-)
Jeg har en database med en Tabel der hedder Biler... Der er 500 biler vil jeg tro... Nu skal jeg bare lave et afstemnings system så man kan stemme på hver bil. Derfor opretter jeg en tabel mere der hedder poll den indeholder så 13 koloner: ID, BilID, BrugerID 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Det er så meningen at når en person går ind under en valgt bil så skal han kunne stemme på den fra 1-10. Hver stemme skal have sit eget ID. Hvis en person stemmer så skal den gemme ID på den bil han har stemt på og hans eget Bruger ID samt hvilken stemme han giver Fx. "True" i 8 det vil sige hat han har givet bilen et 8 tal... Nu kommer det svære så... At vise resutatet. Der skal den jo hente alle stemmer i tabelen "Poll" hvor bilens ID står i kolonen der hedder "BilID" ud fra det skal den regne det om til gennemsnit og vise det som fx. 8,64.. Lad os bare sige der er 2 stemmer: 1=True & 10=True så er resutatet jo 5,00 i snit... Hvordan hiver jeg det sådan ud af databasen ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg vil tillade at kommentere dit design. Det vil blive umiligt at udregne da man skal finde ud af hvilken kolonnne 1..10 der er kryds i for at finde ud af hvilken karakte en bruger har afgivet.
Hvis jeg må forslå en ændring som stadig gemmer brugerID, men lav kolonnerne 1..10 om til en kolonne som du kan kalde karakter. Når en bruger stemmer gemmer du karakteren 1->10 i kolonne.
Så kan du også let få databasen til at udregne gennem snittet med Avg(kolonne)
Ok... Hvis det kan lade sig gøre... Det er fordi man skal kunne se under hver bil det snit der er stemt altså fx. 8,54 eller hvad det nu er... Og så skal man kunne se hvilke bruger der har stemt hvad altså man skal også kunne se en liste over alle brugere der har stemt på bilen og hvad de har givet af stemme hvis det kan lade sig gøre på den måde... Hvad vil det sige med: Avg(Kolonne) ? Lige nu køre jeg Access database men regner med snart at lave det om til MySql...
Den anden måde er man nød til at hendte alle stemmer og så loop gennem recordset og ligge stememrne samme når man finder true i en kolonne
SQL = "SELECT * FROM stemmer WHERE bilID = 1"
karakter = 0 stemmer = 0 do while rs.EOF stemmer = stemmer +1 if rs("1") = true then karakter = karakter +1 if rs("2") = true then karakter = karakter +2 if rs("3") = true then karakter = karakter +3
if rs("10") = true then karakter = karakter +10 rs.Movenext loop
<% Set Conn2 = Server.CreateObject("ADODB.Connection") Conn2.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath("../database/bodykits.dk/brugersystem.mdb") Set rs1 = Conn2.Execute("SELECT * from BilPoll WHERE BilID = '" & intID & "'") Set rs2 = Conn2.Execute("SELECT avg(Stemmer) as snit from BilPoll WHERE BilID = '" & intID & "'") str2Stemmer =left(RS2("Snit"), 4) str1BrugerId = RS1("BrugerId") str1BilId = RS1("BilId") rs2.Close rs1.Close %> <% BilId = Request.QueryString("id") if str1BrugerId = intBrugerId and str1BilId = BilId then Response.write "" & str2Stemmer else Response.write "Du skal stemme." end if %>
Men det skal jo være sådan at hver bruger kun kan stemme 1 gang på hver bil... Jeg har forsøgt at lave noget som du kan se men det virker ikke som det skal... Der hvor jeg henter "str1BrugerId" der udskriver den kun det ID på den FØSTE stemme i tabelen... Men den skal jo undersøge alle stemmerne...
Virker det her ikke i MySQL ? Den regner godt nok et snit ud men kun i en desimal, altså fx.: 5 og ikke 5,67 Hvad skal ændres ?
Set rs = Conn.Execute("SELECT avg(Stemmer) as snit from bilpoll WHERE BilID = '" & intID_Bil & "'") strStemmerSnit =left(RS("Snit"), 4) strStemmerSnitEnD =left(RS("Snit"), 1) rs.Close
Synes godt om
Ny brugerNybegynder
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.