Seite 1 von 2

Im Header anzeigen wieviel Posts heute gemacht wurden?!

Verfasst: 18.02.2004 15:15
von quad
Wie realisiert man das am simpelsten? Habe das Forum hier schon durchstöbert, aber keine wirklich passende Lösung gefunden.

Es soll im Header (unangemeldet) einfach nur folgendes stehen:

"X neue Posts wurden heute geschrieben."

Verfasst: 18.02.2004 15:17
von Firestarter

Verfasst: 18.02.2004 15:24
von quad
naja.. nee, ist auch nicht wirklich das was ich brauche. ich will ja kein mod was mir die letzten posts anzeigt. sondern einfach nur die zahl der heutigen posts. das müsste doch mit einer einzigen sql-abfrage und übergabe in eine variable recht leicht gehen. :|

Verfasst: 23.02.2004 08:55
von Acid

Code: Alles auswählen

#
#--------- [ DATEI ÖFFNEN ] -----------------------------
#
# /language/lang_german/lang_main.php
#
#--------- [ irgendwo zwischen <? und ?> einfügen ] -----------------------------
#
// Heute
$lang['User'] = 'Benutzer';
$lang['Users'] = 'Benutzern';
$days = array('Monday' => 'Montag', 'Tuesday' => 'Dienstag', 'Wednesday' => 'Mittwoch', 'Thursday' => 'Donnerstag', 'Friday' => 'Freitag', 'Saturday' => 'Samstag', 'Sunday' => 'Sonntag');
$lang['Today_stats'] = 'Am heutigen '. $days[date("l", time())] .', den '. date("d.m.Y", time()) .', wurden bisher <b>%s</b> %s in <b>%s</b> %s von <b>%s</b> %s geschrieben.';

#
#--------- [ DATEI ÖFFNEN ] -----------------------------
#
# /index.php
#
#--------- [ FINDE ] -----------------------------
#
	$template->assign_vars(array(
		'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),

#
#--------- [ MIT FOLGENDEM ERSETZEN ] -----------------------------
#
	$sql = "SELECT count(DISTINCT p.post_id) AS posts, count(DISTINCT t.topic_id) AS topics, count(DISTINCT p.poster_id) AS users
	           FROM ". POSTS_TABLE ." p, ". TOPICS_TABLE ." t
	           WHERE from_unixtime(p.post_time,'%Y%m%d') - from_unixtime(unix_timestamp(NOW()),'%Y%m%d') = 0 AND p.topic_id = t.topic_id
	           ORDER BY p.post_time DESC";
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Couldn\'t retrieve posts data.', '', __LINE__, __FILE__, $sql);
	}
	if( $row = $db->sql_fetchrow($result) )
	{
		$today_posts = $row['posts'];
		$l_posts = ( $row['posts'] == '1' ) ? $lang['Post'] : $lang['Posts'];
		$today_topics = $row['topics'];
		$l_topics = ( $row['topics'] == '1' ) ? $lang['Topic'] : $lang['Topics'];
		$today_users = $row['users'];
		$l_users = ( $row['users'] == '1' ) ? $lang['User'] : $lang['Users'];
	}

	$template->assign_vars(array(
		'TODAY_STATS' => sprintf($lang['Today_stats'], $today_posts, $l_posts, $today_topics, $l_topics, $today_users, $l_users),
		'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),

#
#--------- [ DATEI ÖFFNEN ] -----------------------------
#
# /templates/xxx/index_body.tpl
#
#--------- [ irgendwo EINFÜGEN ] -----------------------------
#
<span class="genmed">{TODAY_STATS}</span><br />

Verfasst: 23.02.2004 12:16
von quad
hey hey.. :)

ich werds sofort ausprobieren, aber das klingt ja schonmal gut.

Verfasst: 23.02.2004 22:24
von Guido
Hallo Acid

Super sowas hab ich auch schon lange gesucht und direkt eingebaut, allerdings habe ich eine kleine Korrektur vorzuschlagen in der index.php. Das müsste m.E. so heissen:
#
#--------- [ DATEI ÖFFNEN ] -----------------------------
#
# /index.php
#
#--------- [ FINDE ] -----------------------------
#
$template->assign_vars(array(
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),


#
#--------- [ MIT FOLGENDEM ERSETZEN ] -----------------------------
#
$sql = "SELECT count(DISTINCT p.post_id) AS posts, count(DISTINCT t.topic_id) AS topics, count(DISTINCT p.poster_id) AS users
FROM ". POSTS_TABLE ." p, ". TOPICS_TABLE ." t
WHERE from_unixtime(p.post_time,'%Y%m%d') - from_unixtime(unix_timestamp(NOW()),'%Y%m%d') = 0 AND p.topic_id = t.topic_id
ORDER BY p.post_time DESC";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn\'t retrieve posts data.', '', __LINE__, __FILE__, $sql);
}
if( $row = $db->sql_fetchrow($result) )
{
$today_posts = $row['posts'];
$l_posts = ( $row['posts'] == '1' ) ? $lang['Post'] : $lang['Posts'];
$today_topics = $row['topics'];
$l_topics = ( $row['topics'] == '1' ) ? $lang['Topic'] : $lang['Topics'];
$today_users = $row['users'];
$l_users = ( $row['users'] == '1' ) ? $lang['User'] : $lang['Users'];
}

$template->assign_vars(array(
'TODAY_STATS' => sprintf($lang['Today_stats'], $today_posts, $l_posts, $today_topics, $l_topics, $today_users, $l_users),
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
Eine Zusatzfrage noch:

Ist diese Zusatzabfrage wesentlich mehr db Belastung ?

Grüße
Guido

Verfasst: 24.02.2004 11:24
von Acid
Du hast natürlich Recht mit der Korrektur. :roll:

Grössere DB-Belastung? Eigentlich nicht.. ist ja nur ein DB-Query mehr.
Wenn du jetzt irgend´ne Belastung dadurch feststellst, gib Bescheid.

Verfasst: 24.02.2004 12:40
von Elo
Es werden durch die Abfrage allerdings alle in dem Zeitraum verfassten Beiträge berücksichtigt, unabhängig davon ob ich nun die Rechte für alle Foren habe oder nicht.

Möchte ich nur ergänzt haben.

Elo

Verfasst: 24.02.2004 12:57
von Guido
@Acid: Feststellen kann ich eigentlich nichts was in diese Richtung geht, wollte auch nur auf Nummer sicher gehen mit meiner Frage, jetzt bin ich wenigstens beruhigt..;-)

@Elo: Das stimmt, ist mir auch schon durch den Kopf gegangen, fand`s aber nicht weiter schlimm, weil die Beiträge ja nicht irgendwie zugeordnet sondern rein (nur) gezählt werden...

Grüße Guido

Verfasst: 24.02.2004 13:04
von Elo
@Guido

Wie schon geschrieben wollte ich es nur erwähnt haben, da es bei dieser Unstimmigkeit zu den zu lesenden Beiträgen evtl. zu Verwirrungen oder sogar zu Ärger kommen kann.

Elo