vote - top10

P

P_F

Hi, ich nochmal, die Frage ausm letzten Thread hab ich selbst gelöst ...
schaut euch mal die top10 an, nachdem ihr meine frage gelesen habt.
Ihr werdet sehen, dass das bild an stelle1 1 bewertung und durchschnittl. 5 punkte hat.
Das Bild an stelle2 hat auch durchschnittl. 5 punkte aber 2 stimmen.
Es sollte eigendlich oben stehen.
Hier der link zur page - username und pw = x
http://www.taucher-media.de/?TPL=Fotos&SUBTPL=Top10
 
Na das ist ja sehr schön - vielleicht könntest du auch etwas Quellcode dazu liefern?

Hi, ich nochmal, die Frage ausm letzten Thread hab ich selbst gelöst ...
Falls mit diesem ominösen Thread der Quelltext verbunden ist, dann wäre vielleicht ein Link nicht schlecht - habe nämlich keinen Bock das ganze Forum nach dir abzugrasen

shutdown
 
sorry, das vorige problem hat nix damit zu tun.
Also zur Struktur:
Jeder vote wird in der tabelle votes gespeichert. Diese besitzt die spalten
| ID | user | bildID | value |
user steht auch drin, weil ein user nicht mehr als einmal für ein bild voten darf.
value enthält 0 ... 5 also die stimme des users. Beim votevorgang wird wie gesagt erst eine neue zeile eingetragen in votes und dann aus allen diesen values in der tabelle votes wo bildID = bild für das gevotet der mittelwert gebildet und die tabelle pictures wo jedes bild eine zeile hat wird geupdatet und zwar die spalte rating - da kommt dieser mittelwert rein.
Dann wird in einer whileschleife 10 Zeilen aus der tabelle pictures ausgelesen ORDER BY rating DESC LIMIT 10
Eigendlich sehr simpel
 
du musst doch auch irgendwo abspeichern, wie oft abgestimmt wurde.

und dann ORDER BY `rating`, `dawodrinstehtwieoftabgestimmtwurde` DESC
 
ok, das dürfte mein problem lösen. schreib ich halt einfoch noch die total_votes mit rein in die tabelle. Ich wusste halt nicht dass man nach zwei kriterien sortieren kann. THX
 
Was hältst du von
SELECT avg(value) AS wertung, bildID, count(bildID) AS anzahl FROM votes GROUP BY bildID ORDER BY wertung, anzahl
?
Dann sparst du dir die zusätzliche Spalte..
 
Zurück