tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
463
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ben1895 Ben1895 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    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.
     

  2. #2
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    Wie sieht dein Datenbankmodell momentan aus?
     

  3. #3
    Ben1895 Ben1895 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    Tabelle: buecher

    id, titel, iban, klicks (hier stehen die Gesamtklicks drin)

    Etwas kastriert. So in etwa sieht es aus.
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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

  5. #5
    Sebbo90 Sebbo90 ist offline Mitglied Bronze
    Registriert seit
    Nov 2010
    Beiträge
    41
    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
     

  6. #6
    Ben1895 Ben1895 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    @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)
     

  7. #7
    Sebbo90 Sebbo90 ist offline Mitglied Bronze
    Registriert seit
    Nov 2010
    Beiträge
    41
    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
     

  8. #8
    Ben1895 Ben1895 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    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)
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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

  10. #10
    Sebbo90 Sebbo90 ist offline Mitglied Bronze
    Registriert seit
    Nov 2010
    Beiträge
    41
    Zitat Zitat von Ben1895 Beitrag anzeigen
    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.
    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:

    PHP-Code:
    SELECT buecher_iddatum_zeitCOUNT(*) AS count FROM klicks WHERE datum_zeit BETWEEN '1301179319' AND '1301179399' GROUP BY buecher_id ORDER BY count DESC LIMIT 50 
    falls ich die abfrage erklären soll, sag bescheid.

    mfg
    sebbo
    Geändert von Sebbo90 (27.03.11 um 17:10 Uhr)
     

Ähnliche Themen

  1. Login realisieren
    Von Markus im Forum Java Grundlagen
    Antworten: 8
    Letzter Beitrag: 06.07.09, 07:58
  2. Kalender wie realisieren?
    Von Zero2000 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 05.06.09, 14:48
  3. CMS in Vb realisieren
    Von D@nger im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 26.11.05, 11:54
  4. Undo realisieren
    Von jokey2 im Forum VisualStudio & MFC
    Antworten: 10
    Letzter Beitrag: 09.06.05, 09:38
  5. Wie realisieren?
    Von foxx21 im Forum PHP
    Antworten: 17
    Letzter Beitrag: 25.08.02, 17:39

Stichworte