Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php rankningssystem

Skapad av David, 2011-09-15 14:40 i Webbutveckling & Programmering

1 261
4 inlägg
0 poäng
David
Visningsbild
P Hjälte 1 555 inlägg
0
Jag må tänka helt åt helvete men detta är sättet jag kommit på för att göra ett rankningssystem, om det finns något bättre sätt så vill jag gärna veta.

Det finns fem stjärnor för att ranka ett tex. videoklipp.
Fem rader i databasen (1,2,3,4,5). Om du rankar klippet med en 4'a så sätts raden 4 till 1, nästa som någon röstar 4 sätts den till 2 osv.

Sen för att räkna ut medelvärdet tar man 1*rad1 + 2*rad2 + 3*rad3 + 4*rad4 + 5*rad5 och sedan dela på rad1 + rad2 + rad3 + rad4 + rad5

Detta verkar egentligen för komplicerat för en sådan enkel sak, så tips tack!

Ingen status

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0
Jag skulle nog haft kolumner som typ total_rank och times_voted, och plussa på ett värde mellan 1-5 (eller 0-4, whatevs) i total_rank, och +1 i times_voted varje gång någon röstar, edan dela total_rank med times_voted för att få medelvärdet.

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0

Svar till Syndafloden [Gå till post]:
Det där lät bra, kräver mycket mindre plats i tabellen och mindre beräkningar av datorn.

Ingen status

NKL
Visningsbild
P 36 Mölndal Hjälte 258 inlägg
0
Svar till David [Gå till post]:
Hm, har lite svårt för att tänka mig det där, men det är ju tyvärr min bristande tankeförmåga där.

Jag tror att det finns ett flertal tillvägagångssätt för att uppnå det här.

Jag vill innan jag vrider av med att skriva ned dessa att jag är intresserad av att veta VEM/VILKA som har röstat, så jag tar ett sådant exempel först. Sedan så är detta mest bara förslag på hur man ska lagra det i databasen, uträkningen är ju simpel om inget annat.

A:
- Skapa en tabell som listar själva objektet som ska rankas. Objektet beskrivs av t.ex ett id, titel etc.
- Skapa ytterligare en tabell som håller kolumnerna voteid, objektid(det som rankas, relation till första tabellen), användarid/ipadress och slutligen dess värde från 1-5 (TINYINT som unsigned).

För att räkna på hur många röster varje objekt har fått, så plockar man fram objektets id ur första tabellen och i samma veva alla rankningsid:er från användarna och grupperar efter rankvärde 1-5 och drar fram ett medelvärde. Självklart innebär detta sätt att en total sökning måste göras för att räkna fram hur många som har angivit vad av intervallen 1-5, men det går lättare att avgöra hur många som röstat, röstat på vilket, men även annan statistik så som NÄR folk tenderar till att rösta (lägg en timestamp). Lägg rätt indexes och kolumntyper, så kommer skillnaden vara obefintlig från lösning till lösning.

B (inte ett fan av denna):
- Skapa en tabell som listar själva objektet som ska rankas. Objektet beskrivs av id, titel, rank1, rank2, rank3, rank4, rank5.
- Skapa en tabell som listar vilka användare som har rankat ett objekt, behöver bara innehålla användarid eller ip-adress.

Vid rankning så adderas värdet till den första tabellen och användarens id/ipadress tillförs till den andra tabellen och gör så att användaren inte kan ändra sin röst, men även för att kontrollera så att användaren inte röstar på nytt.

Everywhere is within walking distance if you have the time.


Forum » Datorer & IT » Webbutveckling & Programmering » Php rankningssystem

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons