Jag har 3st bilder, en full stjärna, en halvfull stjärna och en tom stjärna.
Finns det något script eller funktion som kan ta ett medelbetyg på kanske 3,6 och göra om det till 3 fulla stjärnor, en halvfull och en tom osv..
och hur tycker ni jag skall lösa det i databasen, en tabell där alla röster lagras och sedan plocka ut och göra ett medel.
Eller en kolumn med totalt antal poäng, och en med antal röster och räkna ut det så? känns som att alternativ nr2 borde vara det som tar minst på databasen eller?
Kan man tänka sig att det högsta värdet är tio(10) så kanske det blir enklare att trixa med bilderna.
Alltså: ett ger en halv stjärna, två ger en hel stjärna osv...
SELECT AVG(betyg) AS medel FROM tabell
Response.write left("0"& RS(0),2)
Det borde inte vara så intressant att spara varenda röst.
Tycker att alternativ två borde vara smartare.
Ex. fem stycken radiobuttons.
Där "Radiobutton 1" ger två poäng, "Radiobutton 2" ger fyra poäng osv. Då kommer det ju att se ut som att betygsskalan går mellan ett och fem poäng.
Aha joo jaa d låter vettigt men jag har fortfarande inte förstått hur jag skall göra om medelvärdet till bilderna, det var väll det som var den egentliga frågan ;)
Vad har du för databas?
Jag vet inte om detta funkar i mySql men annars så skulle ju detta kunna vara en metod: (OBS! Kvasikod)
...
SELECT AVG(betyg) AS medel FROM tabell
...
Response.write "<img src=""Star_"& left("0"& RS("medel"),2) &".gif"">"
Då är det meningen att om medel är ex.4
så kommer det att stå: <img src="star_08.gif">
Alltså du får skapa tio stycken bilder, var av den första endast har tomma stjärnor, den andra har en halvt ifylld stjärna och resten är tomma, den tredje har en hel stjärna ifylld och fyra tomma osv.
SELECT AVG(betyg) FROM tabell
--------------------------------------------
intBetyg = Round(objRS(0), 1)
If Int(intBetyg) < intBetyg Then
sngBetygOver = CSng(intBetyg - Int(intBetyg))
If sngBetygOver < 0.3 Then
intStars = Int(intBetyg)
ElseIf sngBetygOver => 0.3 AND sngBetygOver < 0.8 Then
intStars = Int(intBetyg) + 0.5
ElseIf sngBetygOver => 0.8 Then
intStars = Int(intBetyg) + 1
End If
Else
intStars = Int(intBetyg)
End If
If Int(intStars) < intStars Then
intStarsOver = intStars - Int(intStars)
If Int(intStars) > 0 Then
For i = 1 To intStars
Response.Write("<img src=""hel.gif"">")
Next
End If
Response.Write("<img src=""halv.gif"">")
intTomma = 5 - (Int(intStars) + 1)
Else
If intStars > 0 Then
For i = 1 To intStars
Response.Write("<img src=""hel.gif"">")
Next
End If
intTomma = 5 - intStars
End If
If intTomma > 0 Then
For j = intTomma To 1 Step - 1
Response.Write("<img src=""tom.gif"">")
Next
End If
Sub WriteStars(intBetyg)
If Int(intBetyg) < intBetyg Then
sngBetygOver = CSng(intBetyg - Int(intBetyg))
If sngBetygOver < 0.3 Then
intStars = Int(intBetyg)
ElseIf sngBetygOver => 0.3 AND sngBetygOver < 0.8 Then
intStars = Int(intBetyg) + 0.5
ElseIf sngBetygOver => 0.8 Then
intStars = Int(intBetyg) + 1
End If
Else
intStars = Int(intBetyg)
End If
If Int(intStars) < intStars Then
intStarsOver = intStars - Int(intStars)
If Int(intStars) > 0 Then
For i = 1 To intStars
Response.Write("<img src=""hel.gif"">")
Next
End If
Response.Write("<img src=""halv.gif"">")
intTomma = 5 - (Int(intStars) + 1)
Else
If intStars > 0 Then
For i = 1 To intStars
Response.Write("<img src=""hel.gif"">")
Next
End If
intTomma = 5 - intStars
End If
If intTomma > 0 Then
For j = intTomma To 1 Step - 1
Response.Write("<img src=""tom.gif"">")
Next
End If
End Sub
WriteStars Round(objRS(0), 1)
Sub WriteStars(intBetyg)
If intBetyg > 0 Then
If Int(intBetyg) < intBetyg Then
sngBetygOver = CSng(intBetyg - Int(intBetyg))
If sngBetygOver < 0.3 Then
intStars = Int(intBetyg)
ElseIf sngBetygOver => 0.3 AND sngBetygOver < 0.8 Then
intStars = Int(intBetyg) + 0.5
ElseIf sngBetygOver => 0.8 Then
intStars = Int(intBetyg) + 1
End If
Else
intStars = Int(intBetyg)
End If
If Int(intStars) < intStars Then
intStarsOver = intStars - Int(intStars)
If Int(intStars) > 0 Then
For i = 1 To intStars
Response.Write("<img src=""hel.gif"">")
Next
End If
Response.Write("<img src=""halv.gif"">")
intTomma = 5 - (Int(intStars) + 1)
Else
If intStars > 0 Then
For i = 1 To intStars
Response.Write("<img src=""hel.gif"">")
Next
End If
intTomma = 5 - intStars
End If
If intTomma > 0 Then
For j = intTomma To 1 Step - 1
Response.Write("<img src=""tom.gif"">")
Next
End If
Else
For i = 1 To 5
Response.Write("<img src=""tom.gif"">")
Next
End If
End Sub
har nu insett att funktionen buggar ur totalt när man kör den i en loop, för d första så fungerar inte loopen som den skall och om om värdet är annat än 5 så funkar sidan inte alls utan bara laddar och laddar tills processen dllhost har sugit upp allt minne och datorn låser sig :D:D:D