Funktionsweise, Statistik (Top 20)?

Micha-RTSF

Grünschnabel
Hallo zusammen,

ich würde gerne einen Top20 statistik schreiben (ähnlich wie bei mtv_top20) und wollte euch fragen wie man dabei vorgeht. Also ich brauche keine fertige scripte oder sonstiges, sondern eine Erklärung wie man dabei vorgeht...

Ich habe eine Seite wo die User Ihre Musik vorstellen (eigene werke) und die Daten werden in DB gespeichert (trackname, id, datum usw. counter(gesamtklicks)) Was muss man ausserdem speichern um die Statistik zu erstellen?

Nun möchte ich das jede Woche (also alle 7 Tage) eine Top 20 errechnen, welche Dateien wurden am meisten runtergeladen und wer z.B. runter/rauf gekommen ist seit letzter Woche

Wie muss ich vorgehen um das zu ermöglichen?

Ich würde mich über eine vernünftige Antwort freuen.

MfG
Micha
 
In deinem Fall müsstest du jedes Ereignis (Herunterladen, etc.) mit Zeitpunkt speichern. Damit wäre es kein Problem die oben beschriebenen Bedingungen zu erfüllen.
 
Nun gut, sagen wir mal ich speichere die Zeit von jedem Download, aber wie wird das ganze dann ausgerechnet?

Sagen wir mal File1 wurde 10 mal runtergeladen und File2 wurde 8 mal runtergeladen und File 3 wurde auch 3 mal runtergeladen. Was ist dann zu beachten? Und wie mache ich das das die statistik alle 7 Tage aktualisiert wird?
 
Jedes Event speichern ist etwas übertrieben.

Ich gehe mal als Beipsiel davon aus, dass du jeden Sonntag eine neue Liste erzeugen willst, in der die Position der Songs drinsteht und ob sie im Vergleich zur Vorwoche gestiegen sind evtl. auch um wieviele Plätze und wieviele Klicks sie jeweils haben.

Dazu solltest du einfach mal am Sonntag einen Dump deiner Songliste machen, der so aussieht, dass du in einer zweiten DB-Tabelle die Song-ID und die Anzahl der Klicks speicherst und dazu vielleicht noch den Zeitpunkt der Aktualisierung. Einen Sonntag später ergänzt du die wiederum aktuellen Klicks und aktualisierst das Datum. Das gleiche tust du ein drittes mal und fertig ist deine Statistik. Du hast also eine Tabelle mit SongID, 3xKlicks und dem Aktualisierungsdatum.

Die aktuelle Woche ergibt sich aus der dritten Klickspalte minus der zweiten Klickspalte. Die Vorwoche ergibt sich aus der zweiten Klickspalte minus der ersten Klickspalte.

Bei jedem Seitenaufruf überprüfst du ob
1. Sonntag ist
2. heute schonmal eine Aktualisierung gemacht wurde.

Wenn du aktualisieren musst, dann geht das so:
1. Klicks aus Spalte 2 in Spalte 1
2. Klicks aus Spalte 3 in Spalte 2
3. Klicks aus Songtabelle in Spalte 3
4. aktueller Timestamt in Datumsspalte.

Ich denke, im Groben wars das. Sicher weiß jemand einen eleganteren Weg, aber ich bin sicher, das kann funktionieren.

Beste Grüße
Falk
 
2 PHP Dateien und mit Cronjob Arbeiten

die eine PHP Datei dient zum aufrufen des DB inhaltes was den usern angezeigt wird
Die andere PHP Datei dient dazu die Statistik zu Aktualisieren.

Nun würde ich zu diesen charst noch ein Punkte System hinzufügen womit abgestimmt wird von 1 bis 10 oder was die Beliebt.
dann fragste halt einfach mit der ersten Datei die Datenbank ab in der Sortierung nach Punkten und Umgekehrt so das der mit der Höhsten Punktzahl ganz Oben steht.

Die 2te Datei sorgt dafür das das Inhalte in der Datenbank die Älter als diese 7 Tage sind vollautomatisch rausgeschmissen werden.

SO werden vollkommen Automatisch die Alten sachen rausgeschmissen.

Aber du kannst auch alles in eine Datei Packen und diese Script dazu veranlassen alte sachen rauszuschmeißen oder einfach nur zu Ignorieren so das er nur die nimmt die innerhalb der sieben Tage sind.

SELECT * FROM deinetabelle WHERE diezait > alsangegeben ODER BY punkte DESC;

um die löschen machste dann einfach

DELETE * FROM deinetabelle WHERE diezeit < alsangegeben;

so würde ich diese Abfrage gestalten.


Gruß Andy
 
Zurück