tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
242
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    PHP-Fan PHP-Fan ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    171
    Hallo,

    es ist schon ziemlich spät - ich weiß. Vielleicht liegt es auch daran das ich zu keiner Lösung komme. Aktuell werden bei mir für bestimmte Datensätze Klicks gezählt, mir einer Reloadsperre via IP. Das klappt auch super. Diese Klicks zeigen aber logischerweise nur die Gesamtklicks an (daraus kann man dann einfach eine Top 25 bauen). Wie kann ich es via SQL und PHP aber realisieren, dass ich für bestimmte Datensätze die Klicks vom aktuellen Tag, Monat und Jahr bekomme. Wie kann ich das machen? Irgendwie bekomme ich da in meinem Gehirn keine logische Lösung zustande.

    Vielen Dank für eure Hilfe.
    Geändert von PHP-Fan (09.02.12 um 03:13 Uhr)
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wie sind die Klicks gespeichert? Eine SQL-Tabelle wo jeder Klick mit Zuordnungs-ID und Zeitstempfel drin steht?

    Wenn ja, dann kannst du mit DATE_SUB arbeiten. Dann mit IF() den Wert 1 oder 0 ausgeben und diese aufsumieren
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    SELECT
      site_id,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 DAY), 1, 0)) AS in_day,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 MONTH), 1, 0)) AS in_month,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 YEAR), 1, 0)) AS in_year
    FROM
      my_klick_table
    GROUP BY
      site_id
     
    ---------------------------------------------------------------------------------------------------
    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

  3. #3
    PHP-Fan PHP-Fan ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    171
    Ja genau. Das ist der Ansatz den ich gebraucht habe. Wie sieht das Performancetechnisch aus? Wobei man das ja auch auslagern und alle X Stunden aktualisieren kann.

    Vielen Dank!
     

  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
    Du meinst mit auslagern dieses Resultat in eine weitere Tabelle schreiben? Ja, kannst einen Cronjob machen. Aber bringt es was? Wieviel mal wird auf diese Statistik zugegriffen?

    Was du sicher mal noch kannst, sind die Daten auf ein Jahr eingrenzen.
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    SELECT
      site_id,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 DAY), 1, 0)) AS in_day,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 MONTH), 1, 0)) AS in_month,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 YEAR), 1, 0)) AS in_year
    FROM
      my_klick_table
    WHERE
      `my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 YEAR
    GROUP BY
      site_id

    Ein Index aif die site_id und dein Timestamp-Feld kann sicher auch nicht schaden.
     
    ---------------------------------------------------------------------------------------------------
    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
    PHP-Fan PHP-Fan ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    171
    Wenn es um mehrere Tausend Datensätze geht, die von mehreren Tausend Besuchern täglich aufgerufen werden, wäre es sinnvoll so eine Tabelle auszulagern, damit diese nicht immer neu berechnet wird. Je nachdem wieviel Datensätze es wirklich werden könnte die oben genannte Anfrage langsam werden. Du hast mir aber den richtigen Ansatz gezeigt, damit komme ich weiter.

    Einen Index werde ich auf die beiden Felder natürlich setzen.

    Vielen Dank!
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Mittels eines Cronjobs ein Script ausführen lassen.

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    -- Alte Daten löschen
    TRANCATE myTempTable;
     
    -- Daten neu einfügen
    INSERT INTO myTempTable (site_id, in_day, in_month, in_year)
    SELECT
      site_id,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 DAY), 1, 0)) AS in_day,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 MONTH), 1, 0)) AS in_month,
      SUM(IF(`my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 YEAR), 1, 0)) AS in_year
    FROM
      my_klick_table
    WHERE
      `my_timestamp_field` >= DATE_SUB(NOW(), INTERVAL 1 YEAR
    GROUP BY
      site_id;
     
    ---------------------------------------------------------------------------------------------------
    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

  7. #7
    PHP-Fan PHP-Fan ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    171
    Herzlichen Dank!
     

Ähnliche Themen

  1. Gruppieren nach Jahr und Monat, angezeigt werden soll der 1.Tag im Monat um 00:00
    Von charlie2009 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 15.09.09, 19:22
  2. Antworten: 7
    Letzter Beitrag: 24.10.07, 22:29
  3. Antworten: 0
    Letzter Beitrag: 24.10.07, 15:06
  4. Antworten: 13
    Letzter Beitrag: 23.10.07, 19:43
  5. Antworten: 0
    Letzter Beitrag: 24.07.05, 16:28