php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.02.2007, 13:52  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard Voting soll Anzahl der Votes berücksichtigen

Hallo Forum,

Ich habe auf diversen Seiten ein eigenes Voting-System laufen.
Letztens kam ich dann drauf dass das wohl nicht so ganz funzt, denn wenn ein User z.B. mit 10 Punkten abstimmt ist der im Ranking höher als einer der z.B. 99 x 10 Punkte und 1 x 5 Punkte bekommen hat.

Zur Vergabe: Punkte von 0 - 10 können vergeben werden.

Ich habe die Felder ..... votes | punkte

Welche ich mit dem Query: ... ORDER BY (punkte/votes) ...

ausgelesen habe. Nur hab ich jetzt keinen Plan was ich machen muss um auch die Anzahl der Votes zu berücksichtigen !?

Hoffe ihr könnt mir da nen Tipp geben ?
madSoul ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.02.2007, 13:54  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

Wenn du dein Tabellen Design behalten willst, kannst du ja mit COUNT arbeiten.
Und somit zählen wieviel mal etwas gevotet wurde.
Das ist aber wohl eher ein MySQL Problem..
__________________
Wie man Fragen richtig stellt
dsmcg ist offline  
Alt 19.02.2007, 14:03  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

@ dsmcg: Danke für die Antwort, aber die Anzahl der Votes steht ja bereits in 'votes' in 'punkte' steht die Summe der bisher gevoteten Punkte.
__________________
it´s not a bug - it´s a feature...
madSoul ist offline  
Alt 19.02.2007, 14:17  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

dann würde ich jeden Vote einzeln behandeln?

oder wenn immer nur die anzahl der Votes zusammen mit dem resultat steht, kannst du ja machen dass nur votes gezeigt werden die mehr als 10 mal (oder halt mehr) gevotet wurden, angezeigt werden?
__________________
Wie man Fragen richtig stellt
dsmcg ist offline  
Alt 19.02.2007, 14:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dein Problem ist doch eher, wie bewerte ich fair ein Objekt?
Sind 1x10 Punkte besser als 99x9 Punkte?

Wenn du nicht alle Bewertungen einzeln abspeicherst, sondern so wie jetzt alle zusammenrechnest, wird das schwierig.

Du musst in deine Berechnung eben noch einen Faktor reinbraten, der höher wird, je mehr Votings abgegeben wurden.

Vielleicht solltest du dir erstmal auf Papier eine Funktion schreiben, die Extrem-Punktvergaben bei wenigen Bewertungen garnicht berücksichtigt und/oder Objekte, die weniger als 100x bewertet wurden, mit einem Faktor von z.B. 0.75 versieht.

Aber das ist alles eher ein Mathe- bzw. Statistik-Problem.
Verwende doch einfach statt dem Durchschnitt den Median, wenn noch zu wenige Bewertungen abgegeben wurden.
Zergling-new ist offline  
Alt 19.02.2007, 14:28  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

Hey Zergling, Das mit dem "Faktor" hört sich für mich echt brauchbar an.
Werd das jetzt so machen:

- 250 Votes Faktor 0.25
- 500 Votes Faktor 0.50
- 750 Votes Faktor 0.75
ab 1000 Votes (ganz normal ausgeben!)
madSoul ist offline  
Alt 19.02.2007, 14:47  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

Also, ich bin da grade am SQL testen:
PHP-Code:
SELECT ...... 
IF(
votes <= 2500.25,IF(votes <= 500 AND votes <=7500.50,IF(votes 750 AND votes <= 1000,0.75,0)) AS fakt 
FROM vereine ORDER BY 
(punkte/votes faktDESC LIMIT 10 
Hab zwar letztens erst mitbekommen das man auch IF Abfragen mit SQL machen kann,
jedoch stimmt das so wohl nicht, denn ich bekomme nur: "You have an error in your SQL syntax."

...von der "Logik" könnte es ja schon einigermaßen passen, oder ?

Edit (noch ein Versuch):

PHP-Code:
$sql "SELECT 
        ............................
        FROM vereine 
        IF 'votes' <= 250 THEN ORDER BY(punkte/votes * 0.25) 
        ELSEIF votes >250 AND votes <= 500 THEN ORDER BY(punkte/votes*0.50) 
        ELSEIF votes >500 AND votes <= 750 THEN ORDER BY(punkte/votes*0.75) 
        ELSE ORDER BY(punkte/votes) LIMIT 10"

Edit again:

Also, falls es jemanden interessieren sollte, ich hab das jetzt so gelöst:

Eine neue Spalte "faktor" in meiner Tabelle.
Ein Cronjob checkt mir dann taglich 2 mal die Votes und korrigiert ggf. den Faktor.
Für die Ausgabe benutzer ich ... ORDER BY(punkte/votes*faktor) ...

Klappt auch super Danke nochmals !
madSoul ist offline  
Alt 19.02.2007, 15:39  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Der nette Herr Bayes hat sich darüber auch schon seine Gedanken gemacht. Herausgekommen ist die "Bayes'sche Bewertung" - wenn man danach googlet findet man ganz brauchbare Anleitungen.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 19.02.2007, 15:50  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

Super, damit habt ihr mir wieder den Tag gerettet

Für interessierte hier die Gleichung der Bayes´schen Bewertung:

br = ( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) ) / (avg_num_votes + this_num_votes)
madSoul ist offline  
Alt 19.02.2007, 19:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Mal ganz unabhängig von Bayes, ist dir mal aufgefallen, dass
<= 250 Votes, Faktor 0.25
<= 500 Votes, Faktor 0.5
<= 750 Votes, Faktor 0.75
ein gewisses Schema zugrunde liegt?

Entweder könntest du diese kurze Syntax verwenden
Code:
IF (votings > 1000, 1.0, votings / 1000) AS factor
oder diese hier
Code:
IF (votings > 1000, 1.0, CEIL(votings / 250) / 4) AS factor

So und jetzt zu Bayes: Irgendwie verrückt, dass ein Mann, der im 18. Jahrhundert gelebt hat, gleich 2 Ideen gehabt hat, die maßgeblich Einfluß auf die Web-Programmierung haben.
Einmal den Bayes (Spam-)Filter und nun offenbar noch diesen Bewertungs-Algorithmus.
Sehr interessant.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Max Anzahl Checkboxen Hu5eL JavaScript, Ajax und mehr 2 25.06.2008 15:37
PHP: Anzahl der Tage bis Tag X (Countdown) DER_Brain Tutorials 14 04.02.2008 22:11
Anzahl gleicher Feldinhalte Datenbanken 2 29.01.2006 12:05
Voting System PHP Tipps 2006 8 23.01.2006 21:26
Nur bestimmte Anzahl von Bildern darstellen??!! Peoples PHP Tipps 2005-2 4 31.12.2005 01:37
anzahl der einträge auslesen faultier PHP Tipps 2005-2 1 09.06.2005 11:39
Voting Sperre PHP Tipps 2005 13 26.05.2005 17:32
Anzahl der Spalten aus einer anderen Tabelle Buhmann Datenbanken 0 16.04.2005 23:50
MySQL - Variablenproblem GeorgM Datenbanken 11 28.02.2005 18:56
$Vote auslesen (anzahl) CHRIS Datenbanken 4 07.12.2004 15:24
Anzahl der Eintragungen feststellen Datenbanken 6 03.12.2004 10:12
textlänge / anzahl zeichen php-newbie83 PHP Tipps 2004-2 2 28.11.2004 13:13
[Erledigt] Anzahl der Beiträge in Schleife abfragen PHP Tipps 2004 4 01.11.2004 18:33
Anzahl der Datensätze mit gleicher ID ermitteln? PHP Tipps 2004 3 18.10.2004 20:08
Anzahl an *.htm-Dateien aus Verzeichnis lesen? Heart PHP Tipps 2004 1 02.07.2004 11:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php punkte voting, voting berechnen mit php

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.