[PHP] voting richtig berechnen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von onip, 24. Juli 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 24. Juli 2009
    voting richtig berechnen

    hi zusammen,

    möchte ein kleines voting-modul entwickeln.
    da stellt sich gleich die frage wie berechne ich das vernüftig?

    die daten werden in einer mySQL liegen.
    dachte an sowas (db-struktur)

    id|userid|contentid|vote|datum
    1|1|1|10|timestamp
    2|2|1|5|timestamp
    3|1|2|6|timestamp
    4|2|2|7|timestamp
    5|3|3|10|timestamp
    ...

    userid und contentid werden beim voten geprüft.
    userid kann nur 1mal für eine contentid abstimmen.

    contentid 1 punkte:
    10 + 5 = 15

    contentid 2 punkte:
    6 + 7 = 13

    contentid 3 punkte:
    10

    formel zu berchnung:
    (anzahluser/anzahlvotes)*punkte

    contentid 1:
    (3/2)*15 = 22,5

    contentid 2:
    (3/2)*13 = 19,5

    contentid 3:
    (3/1)*10 = 30

    so wie es jetzt ist hat contentid 3 mit einer abstimmung die höchste rate.
    also muß noch eine mind. anzahl der user zur bechnung rein. z.b. 2

    bin ich mit diesem ansatz auf den richtigen weg.
    hat ggf. jemand eine andere idee?

    p.s. ge-google-t hab ich ne menge.
    fertige klassen hab ich gefunden und teilweise sind die nicht schlecht.
    wie das aber so ist, ich will mein eigenen scheiß haben und natürlich lernen

    // edit
    vielleicht sollte ich noch erwähnen, das artikel gevotet werden.
     
  2. 24. Juli 2009
    AW: voting richtig berechnen

    der wert eines votes sollte immer gleich bleiben, also ist dein linearer ansatz richtig.
    du könntest allerdings eine regelung einbauen, dass ein voting erst angezeigt hat, wenn x leute gevotet haben oder speziell gekennzeichnet wird (schrift in grau oder sowas). allerdings spielt das kaum eine rolle, wenn das system genug nutzer hat.
    edit: augenblick... was hat die anzahl der user im voting zu suchen?
     
  3. 24. Juli 2009
    AW: voting richtig berechnen

    dachte das ich anhand der user berechne.
    also wieviel user gibt es (3) / wieviel user haben für contentid abgestimmt (2) * gesamtpunkte von contentid

    (anzahl_user/anzahl_user_votes)*punkte

    contentid 1:
    (3/2)*15 = 22,5
     
  4. 24. Juli 2009
    AW: voting richtig berechnen

    ich habe mal eine pollscript gemacht. dort habe ich einfach die wertungen addiert und danach sortiert. schien mir nicht ganz so abwegig zusein.

    dmx
     
  5. 24. Juli 2009
    AW: voting richtig berechnen

    Der Anfang ist schonmal korrekt, aber was genau willst du errechnen? Doch wohl das arithmetische Mittel von vote, oder?

    Summe der Punkte geteilt durch die Anzahl der Leute, die gevotet haben

    Könnte man in SQL so verwirklichen: (ungetestet)
    PHP:
    $contentid  1 //Werte zu dieser Umfrage ausgeben
    $query  "SELECT SUM(vote) as vote, COUNT(vote) as cvote FROM umfragen WHERE contentid=' $contentid '" ;
    $result  mysql_query ( $query );
    $row  mysql_fetch_array ( $result );
    $ergebnis  number_format (( $row [ 'vote' ]/ $row [ 'cvote' ]),  2 );  //auf 2 Nachkommastellen angeben
    print  $ergebnis ;
     
  6. 24. Juli 2009
    AW: voting richtig berechnen

    das wäre aber einfach nur der durchschnitt.
    man kann doch nicht zeug1, das von 2 usern mit dem durchschnitt 4 bewertet wurde höher einschätzen als zeug2, das 2000 votes mit dem durchschnitt 3,5 hat. das ist die problematik an der sache.

    dmx
     
  7. 24. Juli 2009
    AW: voting richtig berechnen

    d.h.

    contentid 1:
    10 + 5 = 15
    vote = 2

    punkt / anzahl votes = durchschnitt
    15 / 2 = 7.50

    das hab ich so auch gefunden (google).
    find ich gut.

    könnte man auch aus der gesamtheit (artikel-, user-, vote-anzahl und punkte) was berechnen?
    ist nur ein gedanke.

    z.b.

    artikel = 3
    user = 3
    votestotal = 5

    contentid 1: 15 punkte (2 votes)
    contentid 2: 10 punkte (2 votes)
    contentid 3: 2 punkte (1 vote)

    formel:
    ( ( anzahl_votes / anzahl_votestotal ) * punkte ) / artikel

    contentid 1:
    ( (2/5) * 15 ) / 3 = 2

    contentid 2:
    ( (2/5) * 10 ) / 3 = 1.33

    contentid 3:
    ( (1/5) * 2 ) / 3 = 0.13


    wenn ein artikel volle punkte erhält (bei allen user),
    oder ein artikel volle punkte erhält (bei einen user)

    artikel = 4
    user = 3
    votestotal = 8

    contentid 1: 15 punkte (2 votes)
    contentid 2: 10 punkte (2 votes)
    contentid 3: 10 punkte (1 vote)
    contentid 4: 30 punkte (3 votes)

    contentid 1:
    ( ( 2 / 8 ) * 15 ) / 4 = 0.93

    contentid 2:
    ( ( 2 / 8 ) * 10 ) / 4 = 0.62

    contentid 3:
    ( ( 1 / 8 ) * 10 ) / 4 = 0.31

    contentid 4:
    ( (3 / 8 ) * 30 ) / 4 = 2.81


    so wie sich das errechnet scheint es fair zuzugehen.
    hab ich dabei einen fehler?
     
  8. 24. Juli 2009
    AW: voting richtig berechnen

    ich würde an deiner stelle die beliebtheit eines eintrags von der bewertung trennen. wenn es beispielsweise downloads sind, könntest du eine übersicht nach den kriterien bewertung, anzahl downloads, letztes update sortieren. wie bei der addonseite für firefox.
     
  9. 27. Juli 2009
    AW: voting richtig berechnen

    danke euch allen.
    hab nun etwas herum experimentiert und bin zu dem entschluß gekommen.
    das ich den durchschnitt errechnen werde.

    also punkte / anzahl

    vorteil den ich daran sehe:
    - ich kann die artikel anhand der punkte sortieren
    - die punkteverteilung von 1-10 find ich gut

    nachteil:
    - max. punkt bei nur einen vote (also 10/1). Lässt sich aber umgehen.

    also, nochmal danke für eure unterstützung und BW sind raus.

    closed
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.