---
title: "Ratingsystem till Filer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/90635-ratingsystem-till-filer"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "MickeA.com"
published: "2003-11-17T16:53:16.000Z"
updated: "2003-11-18T20:04:06.000Z"
replies: 15
views: 355
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/90635-ratingsystem-till-filer"
---

# Ratingsystem till Filer

## #1 — MickeA.com, 2003-11-17T16:53Z

Hej Hallå

Jag har en drös med Filer på min hemsida som man kan ladda hem. Nu vill jag ha ett sorts ratingsystem till dessa. Det ska vara en \<select\> lista med val mellan 1 till 10. Max på skalan är 10 minst är 1. Nu vill jag ha så att det även visas en decimal, så att om 3 personer röstat så ska ett sorts snitt rälnas ut, sen ska resultatet visas med en decimal, tex ska en fil kunna ha 3.4 av 10 i betyg. 

I min tabell i db'n (Access) hade jag tänkt lägga till kolumnerna "rate" (betyget) och "rate_antal" (antal som röstat på filen). Sen ska jag även ha en tabell till (tbl_rate_ip) där ipadresserna för de3 som röstat ska loggas, man ska bara kunna rösta en gång.

JAg känner att jag fastat lite grann och behöver hjälp att komma loss (HaHa...) men med en start och ngt att börja med tack ;)

Permalänk: https://www.webforum.nu/p/90635

## #2 — MickeA.com, 2003-11-17T19:39Z

Är det \_ingen\_ som vet hur jag ska börja?! Hallå, alla här verkar ju hajj på ASP så ngn måste ju kunna säga ngt ? ;

Permalänk: https://www.webforum.nu/p/1207063

## #3 — MickeA.com, 2003-11-18T17:49Z

Nu har jag kommit en bra bit på väg, men...

Jag har en tabell (tbl_rate_ip) där ipadressen för den som röstat (Man ska bara kunna rösta en gång) samt ID't för Filen finns.

Sen hra jag en tabell (tbl_files) med sökvägar, beskrivningar mm. i filerna. I den tabellen finns även Rate, där resultatet för filen sparas.

Såhär ser frågan som plockar ut allt ut:

```
--------------------------------------------------------
strSQL = "SELECT Rate, (SELECT COUNT(*) FROM tbl_rate_ip WHERE fil_ID = " & id & ") AS Antal FROM tbl_files WHERE ID = " & id & ";"
--------------------------------------------------------
```

Såhär långt funkar det, men det blir fel.

Såhär formaterar jag resultatet:

```
--------------------------------------------------------
strTemp2 = "Betyg: " & FormatNumber(oRec("Rate") / oRec("Antal"), 1) & "&nbsp;"
--------------------------------------------------------
```

Nu blir det så att 10 inte blir högst, säg att 10 personer har röstat och det totala resultatet för en fil är 245, då blir det 24,5 som det är nu, vilket är fel.

Så det här behöver jag hjälp med. Tack !

Permalänk: https://www.webforum.nu/p/1207470

## #4 — MickeA.com, 2003-11-18T18:11Z

Lösningen var ju enkel, lite lätt matte bara:

```
strTemp2 = "Betyg: " & FormatNumber([b]([/b]oRec("Rate") / oRec("Antal")[b]) / 10[/b], 1) & "&nbsp;"
```

Permalänk: https://www.webforum.nu/p/1207484

## #5 — MickeA.com, 2003-11-18T18:18Z

Njä, det blir ju inte rätt iaf. Om en enda person röster 5 på en fil, så blev ju resultatet 0.5, det ska ju då bli 5. Nu sitter jag fast igen :( Hjälp ;)

Permalänk: https://www.webforum.nu/p/1207486

## #6 — @nders, 2003-11-18T18:20Z

Jag förstår inte riktigt vad det är du försöker räkna ut...

Permalänk: https://www.webforum.nu/p/1207488

## #7 — Cannabis_Tomten, 2003-11-18T18:22Z

Antalet röster / summan av alla röster multiplicerat med 100

hmmm, jag har för mej att det är så =)

Permalänk: https://www.webforum.nu/p/1207489

## #8 — MickeA.com, 2003-11-18T18:43Z

@nders =\> Ett "Rating" system på filer, man ska kunna rösta på filer, man kan välja att rösta 1 - 10. Skalan ska gå från 1 - 10, den ska visa EN decimal. Är du / ni andra med bättre nu?? Röstar EN person en 10, blir resultatet 10, sen blir det ju lite mindre om person nummer 2 tex., röstar en 2:a. Ska prova Cannabis_Tomten's grejj och se. Kom gärna med fler exempel.

Permalänk: https://www.webforum.nu/p/1207502

## #9 — MickeA.com, 2003-11-18T18:45Z

Cannabis_Tomen =\> Med ditt får jag ju ut procent, det vill jag inte. Tänk er en skala från 1 - 10, minst är ett, max är 10. Filerna kan bedömas mellan 1 - 10. Om ni inte förstår vet jag tyvärr inte hur jag ska förklara.

Permalänk: https://www.webforum.nu/p/1207503

## #10 — @nders, 2003-11-18T18:53Z

```
FormatNumber (totalaröstsumman/antaletröstande, 1)
```

Det borde inte vara klurigare än så väl?

Permalänk: https://www.webforum.nu/p/1207508

## #11 — K@llen, 2003-11-18T18:59Z

Glöm inte heller kolla så att du inte gör en division med 0. :)

Permalänk: https://www.webforum.nu/p/1207509

## #12 — MickeA.com, 2003-11-18T19:02Z

@nders =\> SOm du ser i mitt kodexempel har jag redan så, men det funkar inte... REsultatet får ju INTE överstiga 10, men det går det ändå. Om ngt av det den plockar ut ut dbn skulle vara noll, visas "Inga Röster" ;)

Permalänk: https://www.webforum.nu/p/1207512

## #13 — @nders, 2003-11-18T19:05Z

Hur i hela helskotta kan snittet bli över 10 om 10 är maxbetyg?

Permalänk: https://www.webforum.nu/p/1207515

## #14 — MickeA.com, 2003-11-18T19:07Z

Det...

...undrar jag med.

```
<%
Response.Expires = -1000

Dim oConn
Dim oRec
Dim strSQL

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/db.mdb"))

id = Request.Querystring("id")

If Request.Querystring("a") = "add" Then
	Set oRec = oConn.Execute("UPDATE tbl_files SET Antal = Antal + 1 WHERE ID = " & id & ";")
	Response.reDirect("files_update.asp?id=" & id & "&a=show")
ElseIf Request.Querystring("a") = "show" Then
	
	strSQL = "SELECT ipadress, fil_ID FROM tbl_rate_ip WHERE ipadress = '" & Request.Servervariables("REMOTE_ADDR") & "' AND fil_ID = " & id & ";"
	Set oRec = oConn.Execute(strSQL)
		If oRec.EOF Then
			tempStr = "<form name='form_rate' method='post' action='files_update.asp?a=rate&id=" & id & "'><select name='rate_file' class='rate'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>&nbsp;&nbsp;<a href='#' onclick=""javascript:return betyg();"" class='forum'>Rösta</a></form>"
		Else
			tempStr = "<a href='javascript: close(self);' class='forum'>Stäng</a>"
		End If
'################ RÄKNA UT #####################
	strSQL = "SELECT Rate, (SELECT COUNT(*) FROM tbl_rate_ip WHERE fil_ID = " & id & ") AS Antal FROM tbl_files WHERE ID = " & id & ";"
	'Response.Write(strSQL)
	'Response.End
	Set oRec = oConn.Execute(strSQL)
	
	If oRec("Antal") = "0" Or oRec("Rate") = "0" Then
		strTemp2 = "&nbsp;&nbsp;Inga Röster"
	Else
		'strTemp2 = "&nbsp;&nbsp;Betyg: " & Round((oRec("Rate") / oRec("Antal")), 1)
		Response.Write("Antal: " & oRec("Antal"))
			Response.Write("<br>Röster: " & oRec("Rate"))
	End If
'############################################
	strSQL= "SELECT ID, Filnamn, Path, Typ, Besk, Antal FROM tbl_files WHERE ID = " & id & ";"
	Set oRec = oConn.Execute(strSQL)

If Not oRec.EOF Then

%>

<table border="0" width="100%" cellspacing="0" cellpadding="0" style="border: 1px #000000 solid;">
<tr>
<td class='files_topic' style="padding-left: 5px;" colspan='2'><img src='pics/rarico.png' border='0'>&nbsp;&nbsp;<%=oRec("Filnamn")%></td>
</tr>
<tr>
<td class='files' colspan='2'><textarea name='text' cols='61' rows='10' readonly><%=oRec("Besk")%></textarea></td>
</tr>
<tr>
<td class='files_topic' style="height: 17px; padding-left: 5px; text-align: left; vertical-align: middle; border: 1px #000000 solid;"><%=tempStr & strTemp2%></td>
<td class='files_topic' style="padding-right: 5px; text-align: right; vertical-align: middle; border: 1px #000000 solid;"><a href='<%=path & "files_update.asp?a=add&id=" & id%>' onclick="javascript:window.open('<%=path & oRec("Path") & oRec("Filnamn")%>');window.close(self);" class='forum'>Ladda Hem</a></td>
</tr>

<%Else%>
<table border="0" width="100%" cellspacing="0" cellpadding="0" style="border: 1px #000000 solid;">
<tr>
<td class='files_topic' style="padding-left: 5px;" colspan='2'><img src='pics/rarico.png' border='0'>&nbsp;&nbsp;Ett fel uppstod, försök igen lite senare.</td>
</tr><tr>
<td class='files' colspan='2'><textarea name='text' cols='58' rows='10' readonly></textarea></td>
</tr><tr>
<td class='files_topic' style="padding-left: 5px; text-align: left;"><%=tempStr%></td>
<td class='files_topic' style="padding-right: 5px; text-align: right;"><a href='#' onclick='javascript:return false;' class='forum'>Ladda Hem</a></td>
</tr>
<%
Set oRec = Nothing
End If

ElseIf Request.Querystring("a") = "rate" Then
	strRate = Trim(Request.Form("rate_file"))
	id = Request.Querystring("id")

	strSQL = "SELECT Rate FROM tbl_files WHERE ID = " & id &";"
	Set oRec = oConn.Execute(strSQL)
	If Not oRec.EOF Then
		'Rätt
		rate = strRate + oRec("Rate")
		strSQL = "UPDATE tbl_files SET Rate = " & rate & " WHERE ID = " & id & ";"
		Set oRec = oConn.Execute(strSQL)
		Set oRec = Nothing
			strSQL = "INSERT INTO tbl_rate_ip(ipadress, fil_ID) VALUES('" & Request.servervariables("REMOTE_ADDR") & "', '" & id & "');"
			Set oRec = oConn.Execute(strSQL)
			Set oRec = Nothing
		Response.reDirect("files_update.asp?id=" & id & "&a=show")
	Else
		'Fel
	End If

End If
%>
```

Det är koden för allt ;)

Permalänk: https://www.webforum.nu/p/1207517

## #15 — @nders, 2003-11-18T19:27Z

Oj vad kladdigt. :)

Är denna SQL-fråga verkligen rätt? Exakt vad returnerar den?

```
strSQL = "SELECT Rate, (SELECT COUNT(*) FROM tbl_rate_ip WHERE fil_ID = " & id & ") AS Antal FROM tbl_files WHERE ID = " & id & ";"
```

Innehåller Rate den totala röstmassan, dvs har två röstat 10, innehåller den då 20? Och count-delfrågan returnerar antalet röstare?

Är du säker på att röstningarna lagras som du tänkt? För om ovanstående stämmer, då ska 20/2 aldrig kunna överstiga 10. Det kan det iofs aldrig, men... ;)

Permalänk: https://www.webforum.nu/p/1207527

## #16 — MickeA.com, 2003-11-18T20:04Z

> **@nders skrev:**
>
> Innehåller Rate den totala röstmassan, dvs har två röstat 10, innehåller den då 20? Och count-delfrågan returnerar antalet röstare?

Precis så ja, vet att koden är kladdig, men det är inte mitt fel ;) Exakt som du säger har jag tänkt, det är resultatet jag inte får fram schysst. Dessutom strular det här:

```
strSQL = "SELECT ipadress, fil_ID FROM tbl_rate_ip WHERE ipadress = '" & Request.Servervariables("REMOTE_ADDR") & "' AND fil_ID = " & id & ";"
```

De kollar om man redan röstat på den filen, problemet är att om redan fil_ID finns, då skrivs inte formuläret ut, det ska skrivas ut om INTE BÅDE ipadressen och fil_ID finns. Alltså, Ipadressen "Knyts" ihop med fil_ID. Men som det är nu så om jag går in o röster på ngt kan inte ngn annan rösta på samma sak senare, får då säger ovanstående fråga ifrån... Så där är ngt fel med.

Permalänk: https://www.webforum.nu/p/1207549

---

Tråden på webben: https://www.webforum.nu/amne/asp/90635-ratingsystem-till-filer
