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 ;)
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 & ";"
--------------------------------------------------------
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.
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 ;)
@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.
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.
@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" ;)
Ä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... ;)
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.
719 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e