ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
463
463
EMPFEHLEN
-
Hallo,
erst einmal herzlichen Glückwunsch für eine gelungene Präsentation der Seite und des Forums.
Ich möchte gerne etwas umsetzen was ansich einfach zu sein scheint. Allerdings weiß ich nicht wie ich das genau umsetzen kann.
Es sollen von bestimmten Datenbankeinträgen die alle eine ID haben, die Klicks protokolliert werden. Das ganze soll allerdings so aufgebaut sein, dass man daraus eine Top 50 bauen kann. Natürlich könnte ich einfach alle Klicks zusammenzählen (die es insgesamt gegeben hat), das mache ich auch. Aber ich möchte auch wissen, welcher Datenbankeintrag (welche ID), heute, diesen Monat und dieses Jahr am meisten aufgerufen wurde. Die Gesamtzahl habe ich ja wenn ich alles zusammenzähle.
Ich weiß allerdings absolut nicht wie ich das am besten umsetzen kann. Am besten so, dass ich immer am ersten des Jahres die Tabelle in der Datenbank leeren kann und dann wieder neu gezählt wird. Die neue Tabelle soll nur für die Werte von heute, dem Monat und des Jahres erstellt werden. Die Gesamtanzahl gibt es bereits in einer anderen Tabelle.
Ich hoffe ich konnte mein Problem verständlich erklären. Ist nicht ganz so leicht.
Liebe Grüße,
Ben.
-
Wie sieht dein Datenbankmodell momentan aus?
-
Tabelle: buecher
id, titel, iban, klicks (hier stehen die Gesamtklicks drin)
Etwas kastriert. So in etwa sieht es aus.
-
Für die Statisitk musst du die Klicks einzel mitzählen
Code :1 2 3
Tabelle klicks buecher_id datum_zeit
Dann kannst du über diese Tabelle diverse Statistiken ziehen---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hi,
hab das mal überflogen. Spontan würde mir folgendes einfallen:
Als erstes würde ich deine DB ein wenig umändern bzw 2 spalten hinzufügen. Da du ja tages,monats,jahres stats möchtest.
id, titel, iban, Tagesklicks, Monatklicks, Jahresklicks
Danach dann einfach bei jedem klick die entsprechende datenbankzeile UPDATEN allso zb
UPDATE buecher SET Tagesklicks = Tagesklicks + 1, Monatklicks = Monatklicks + 1, Jahresklicks = Jahresklicks + 1 WHERE id = '$id'
Dann bei jeden Tag, Monat, Jahr ein cronjob durchlaufen lassen was alle tages, monats, jahres stats auf 0 setzt.
mfg
sebbo
-
@yaslaw: In welchem Format speichere ich die Zeit? Timestamp oder DATE oder DATETIME und wie komme ich dann die die besagten Daten (heute, Monat, Jahr)? Ein kleines Beispiel wäre sehr lieb.
@Sebbo90: Ich werde auf jedenfall eine weitere Tabelle dafür anlegen wie es yaslaw vorgeschlagen hat. Ich finde deine Lösung kompliziert auch wenn sie wahrscheinlich funktioniert.
Danke schon einmal an euch!Geändert von Ben1895 (23.03.11 um 22:05 Uhr)
-
Ja es funktioniert natürlich beides. Yaslaws variante scheint auch einfacher zu sein nur bläht das je nach klicks richtig die db auf und du kommst um weiteren code nicht ohne weiteres herum. So hat man eben halt gleich die richtige Anzahl klicks usw.
Naja viele wege führen nach Rom
mfg
-
yaslaws Variante ist auch etwas dynamischer. Bei deiner Variante passiert irgendein Fehler bei den Jahres-Werten und dann war es das. Bei yaslaws Variante könnte ich das dann einfach neu berechnen... Nur weiß ich noch nicht ganz wie ich an die getrennten Werte rankomme.
Die Werte die dann aus der besagten DB kommen werden ja nur einmal die Stunde (z.B) aktualisiert (wieder an einem anderen Ort, logischerweise). Die Tabelle mit den Klicks ist eben nur da, damit es auch immer wieder berechnet werden kann. Natürlich wird nicht bei jedem Useraufruf neu berechnet. Das sprengt in der Tat die Datenbank - gerade wenn es in die Zehntausende-User-täglich geht.Geändert von Ben1895 (23.03.11 um 22:19 Uhr)
-
timestamp ist das was du am besten nimmst.
Meine Variante ist eine einfache Normalisierung. Die Variante von Sebbo hat das Problem, dass immer Anfangs Monat alles Monatsfelder auf 0 zurückgesetzt werden müssen (dito jeden Tag für die Tagesklicks etc) und man somit keine Historie hat: Wie viele Klicks hatte ich vor 2 Monaten, letzten Monat, diesen Monat.
Mit der normalisierten Variante ist man auch in Zukunft für weitere Auswertungen der Daten gewappnet.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
sry habe den post nicht weiter verfolgt daher die späte antwort nun, vll hilft sie dir ja noch:
Du könntest bei der abfrage mit between arbeiten und die link ids gleichzeitig counten. Ungefähr so in dem schema:
falls ich die abfrage erklären soll, sag bescheid.PHP-Code:SELECT buecher_id, datum_zeit, COUNT(*) AS count FROM klicks WHERE datum_zeit BETWEEN '1301179319' AND '1301179399' GROUP BY buecher_id ORDER BY count DESC LIMIT 50
mfg
sebboGeändert von Sebbo90 (27.03.11 um 17:10 Uhr)
Ähnliche Themen
-
Login realisieren
Von Markus im Forum Java GrundlagenAntworten: 8Letzter Beitrag: 06.07.09, 07:58 -
Kalender wie realisieren?
Von Zero2000 im Forum PHPAntworten: 5Letzter Beitrag: 05.06.09, 14:48 -
CMS in Vb realisieren
Von D@nger im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 26.11.05, 11:54 -
Undo realisieren
Von jokey2 im Forum VisualStudio & MFCAntworten: 10Letzter Beitrag: 09.06.05, 09:38 -
Wie realisieren?
Von foxx21 im Forum PHPAntworten: 17Letzter Beitrag: 25.08.02, 17:39





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren