Hej, jag hade tänkt lägga upp en funktion till min sida. När jag skrivit en artikel om en produkt så vill jag att de som besöker sidan ska kunna ge produkten ett betyg, skala 1-10. Jag började med att göra en meny/list på sidan där de ska rösta.
Men sedan vet jag inte vad jag skall göra, har en kolumn i min tabell "Artiklar" som heter "betyg".
Där hade jag tänkt att ett medelvärde av vad besökarna har gett produkten ska finnas. Alltså, en besökare röstar på produkten och ger den 5, då ska ju värdet i "poang" för den produkten, (produkten anges i id) vara 5, sedan kommer en och ger produkten 7, då blir värdet i "poang" 6. Medelvärdet hela tiden alltså.
Behöver jag göra fler sidor som kollar av så allt fungerar? Att man skickas till en sida som läser av betyget och sedan lägger in i databasen efter att ha räknat ut medelvärdet? Går det att göra så att man bara kan rösta en gång?
För att se till att de röstar en gång lägger du helt enkelt in en cookie.
Vad gäller medelbetyg tycker jag du ska ha tre fält i databasen: "medelbetyg", "betyg" och "antalroster".
Då blir det helt enkelt att det betyg de ger artikeln plussas på varandra i fältet "betyg" samtidigt plussas 1 på i "antalroster" varje gång någon röstar.
Medelbetyget får du ut genom att ta "medelbetyg"/"antalroster"
Vill du slippa decimaltal skriver du round...
Klart?
------------------
~~~~~~~~~~~~~~~~~~~~
Mvh, Andreas zizo@telia.com
går det att endast använda ett fält? Att när man markerar ett värde i listan så skickas man till typ en mellansida eller något som snabbt kollar upp vilket betyg man gav? Och där också beräknar allt i en enda kolumn, t ex att den tar det existerande värdet i kolumnen "betyg" och på något sätt räknar ut vad det nya medelvärdet ska vara?
Vore jätteglad om någon kunde visa ett "round" exempel också, med t ex 2 decimaler.
ok, jag skapade två kolumner till då, "antalroster" och "medelbetyg"
Ska jag göra en mellansida man skickas till via <form>-en? Typ mellansida.asp där den plussar på värdena? Ska jag ha någon querystring som hjälper att hålla reda på betygen, man kan skickas till mellansida.asp?artikel_id=1&betyg=1, om man valt 1 osv.
Kan man skriva såhär för att få rätt i kolumnen "betyg"?
SQL = "UPDATE Artiklar SET betyg=betyg+=" & request.querystring("betyg") & " WHERE id=" & request("artikel_id")
Connection.Execute(SQL)
Och såhär i "antalroster"?
SQL = "UPDATE Artiklar SET antalroster=antalroster+1 WHERE id=" & request("artikel_id")
Connection.Execute(SQL)
Tabellen här kolumnerna antal och medel och bara en rad antar jag
Set SQLstmt1 = connection.execute("SELECT antal, sammanlagt FROM tabellen")
antal = SQLstmt1("antal")
sammanlagt = SQLstmt1("sammanlagt")
medel = ROUND(sammanlagt / antal, 1)
Och för att lägga in de nya rösterna så adderar du bara på i sammanlagt med den nya röstsumman och gör antal = antal -- 1 (antal + 1) i en annan SQL-sats.
------------------
MVH // Cyprys
Politik är som en kvinna. Man lägger ena benet åt vänster, det andra benet till höger och koncentrerar sig på centerpartiet.
ok. tack så mycket för koden!
jag har 3 kolumner
* medelbetyg (antalroster/besokarbetyg)
* antalroster (hur många som röstat)
* besokarbetyg (betyget de ger)
listan/menyn heter "vote" så jag testade det här
SQL = "UPDATE Artiklar SET antalroster=antalroster+1 WHERE id=" & request("id")
Connection.Execute(SQL)
SQL = "UPDATE Artiklar SET besokarbetyg=besokarbetyg+" & Request.Form("vote") & " WHERE id=" & request("id")
Connection.Execute(SQL)
Men den gav felet:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'besokarbetyg+'.
/artikel.asp, line 28
jag tror jag vet vad som är fel, men har någon ett Javascript eller nått som göra att man skickas till en sida direkt när man markerat ett värde i listan?
Sedan citerar jag mig sälv:
kan man köra en slags UPDATE på
Okej, jag tror jag fått altt att fungera, det enda jag behöver nu är en kod som lägger in besokarbetyg/antalroster i kolumnen medelbetyg! Och det ska vara en decimal.
Sedan ska man bara kunna rösta en gång, det kanske man kan gör med cookies, men HUR? Har någon en liten kodsnutt? :)
Tacksam för svar
/mvh Pudolf
273 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25