Ich hoffe du kennst dich ein wenig mit PHP und SQL aus...
Code: Alles auswählen
//Heute Null Uhr:
$null_uhr = mktime(0,0,0,date('d'),date('m'),date('Y'),date('I'));
//86400 = 24 Stunden in Sekunden
$sql = "SELECT count(*) AS posts_heute FROM " . POSTS_TABLE . " WHERE (post_time - $null_uhr) < 86400 AND (post_time - $null_uhr) >= 0";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Konnte die Poster - Statistiken nicht lesen', '', __LINE__, __FILE__, $sql);
}
$resultat = $db->sql_fetchrow($result);
$postanzahl_heute = $resultat['posts_heute'];
Bitte auf jeden Fall ein Backup machen, der Code ist ungetestet (ich hoffe, ich habe mich in der Parameterreihenfolge bei mktime nicht vertan...).
Das zweite ist Aufwändiger, mal sehen ob mir da auch ein SQL Befehl für einfällt...
Code: Alles auswählen
$sql = "SELECT count(*) AS anzahl,
FROM_UNIXTIME(FLOOR(post_time/86400)*86400) AS Datum,
FLOOR(post_time/86400) AS Test
FROM ".POSTS_TABLE."
GROUP BY FLOOR(post_time/86400)
ORDER BY post_time DESC";
Leider ist da noch irgendwo der Wurm drin, einen Teil der Posts zählt die Kiste bei mir noch zum alten Tag wenn sie vor 1 Uhr nachts gepostet wurden, einen Teil sogar bis 2 Uhr noch. FROM_UNIXTIME(0) ergibt auch nicht den 1.1.1970 0 Uhr, sondern den 1.1.1970 1 Uhr... Die Gruppierung macht er in jedem Fall nicht so ganz richtig, zumindest bei mir. Jemand eine bessere Idee?
EDIT: Der Code für die zweite Frage ist leider vollkommener Murks, denn er beachtet die Zeitzonen genausowenig wie die Sommerzeit/Winterzeitumstellungen. Hierher kommen wohl auch die seltsamen Ergebnisse beim ausprobieren.