Seite 1 von 1

dayly user Mod - letzte 24h?

Verfasst: 28.04.2005 08:09
von Helmut71
Hallo!!

Ich verwende seit einiger Zei den dayly-users-Mod:

Code: Alles auswählen

//show dayly users mod
$time_now=time();
$time1Hour=$time_now-3600;
$minutes = date('is', $time_now);
$hour_now = $time_now - (60*($minutes[0].$minutes[1])) - ($minutes[2].$minutes[3]);
$dato=create_date('H', $time_now,$board_config['board_timezone']);
$timetoday = $hour_now - (3600*$dato);
$sql = 'SELECT session_ip, MAX(session_time) as session_time FROM '.SESSIONS_TABLE.' WHERE session_user_id="'.ANONYMOUS.'" AND session_time >= '.$timetoday.' AND session_time< '.($timetoday+86399).' GROUP BY session_ip';
if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve guest user today data", "", __LINE__, __FILE__, $sql);
while( $guest_list = $db->sql_fetchrow($result))
{
	if ($guest_list['session_time'] >$time1Hour) $users_lasthour++;
}
$guests_today = $db->sql_numrows($result);
$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon FROM ' . USERS_TABLE . ' WHERE user_id!="'.ANONYMOUS.'" AND user_session_time >= '.$timetoday.' AND user_session_time< '.($timetoday+86399).' ORDER BY username';
if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve user today data", "", __LINE__, __FILE__, $sql);
while( $todayrow = $db->sql_fetchrow($result))
{
	$style_color = "";
	if ($todayrow['user_lastlogon']>=$time1Hour)
	{
		$users_lasthour++;
	}
	switch ($todayrow['user_level'])
	{
		case ADMIN :
		      $todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
      		$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
			break;
		case MOD :
		      $todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
      		$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
			break;
	}
 	$users_today_list.=( $todayrow['user_allow_viewonline'])?' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'>' . $todayrow['username'] . '</a>,' : (($userdata[user_level]==ADMIN) ? ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'><i>' . $todayrow['username'] . '</i></a>,' : '');
	if (!$todayrow['user_allow_viewonline']) $logged_hidden_today++;
	else $logged_visible_today++;
}
if ($users_today_list)
{
	$users_today_list[ strlen( $users_today_list)-1] = ' ';
} else
{
	$users_today_list = $lang['None'];
}
$total_users_today = $db->sql_numrows($result)+$guests_today;

$users_today_list = $lang['Registered_users'].' ' . $users_today_list;
$l_today_user_s = ($total_users_today) ? ( ( $total_users_today == 1 )? $lang['User_today_total'] : $lang['Users_today_total'] ) : $lang['Users_today_zero_total'];
$l_today_r_user_s = ($logged_visible_today) ? ( ( $logged_visible_today == 1 ) ? $lang['Reg_user_total'] : $lang['Reg_users_total'] ) : $lang['Reg_users_zero_total'];
$l_today_h_user_s = ($logged_hidden_today) ? (($logged_hidden_today == 1) ? $lang['Hidden_user_total'] : $lang['Hidden_users_total'] ) : $lang['Hidden_users_zero_total'];
$l_today_g_user_s = ($guests_today) ? (($guests_today == 1) ? $lang['Guest_user_total'] : $lang['Guest_users_total']) : $lang['Guest_users_zero_total'];
$l_today_users = sprintf($l_today_user_s, $total_users_today);
$l_today_users .= sprintf($l_today_r_user_s, $logged_visible_today);
$l_today_users .= sprintf($l_today_h_user_s, $logged_hidden_today);
$l_today_users .= sprintf($l_today_g_user_s, $guests_today);
(aus der portal.php)

Jetzt wollte ich mal fragen, ob man den so umprogrammieren kann, dass statt den usern die heute das Board besucht haben (er fängt ja Mitternacht neu zu zählen an), die user gezeight werden, die in den letzten 24 h das Board besucht haben..??

Verfasst: 28.04.2005 10:28
von roger
Ich habe es bei mir so gelöst:


Nach

Code: Alles auswählen

$time1Hour=$time_now-3600;

Code: Alles auswählen

$time24hour=$time_now-86400;
einfügen.

Die erste Datenbankabfrage sieht dann so aus:

Code: Alles auswählen

$sql = 'SELECT session_ip, MAX(session_time) as session_time
		FROM '.SESSIONS_TABLE.'
		WHERE session_user_id="'.ANONYMOUS.'"
			AND session_time >= '.$time24hour.'
			AND session_time< '.($time24hour+86400).'
		GROUP BY session_ip';
Die andere:

Code: Alles auswählen

$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon
		FROM ' . USERS_TABLE . '
		WHERE user_id != ' . ANONYMOUS . '
			AND user_lastlogon >= ' . $time24hour . '
			AND user_lastlogon < ' . ($time24hour+86400) . '
		ORDER BY user_lastlogon';
wobei ich dann aber nach Einlogg-Zeitpunkt sortiere und nicht mehr alphabetisch.


Aus:

Code: Alles auswählen

$l_today_user_s = ($total_users_today) ? ( ( $total_users_today == 1 )? $lang['User_today_total'] : $lang['Users_today_total'] ) : $lang['Users_today_zero_total'];
wurde:

Code: Alles auswählen

$l_today_user_s = ($total_users_today) ? ( ( $total_users_today == 1 )? $lang['User_24_total'] : $lang['Users_24_total'] ) : $lang['Users_24_zero_total'];
mit

Code: Alles auswählen

$lang['Users_24_zero_total'] = "In den letzten 24 Stunden haben <b>0</b> Benutzer das Forum besucht: ";
$lang['User_24_total'] = "In den letzten 24 Stunden hat <b>%d</b> Benutzer das Forum besucht: ";
$lang['Users_24_total'] = "In den letzten 24 Stunden haben <b>%d</b> Benutzer das Forum besucht: ";
in der lang_main

roger

Verfasst: 13.05.2005 08:26
von Helmut71
@roger: bei mir hat das so nicht geklappt.

es werden weiterhin nur die seit 12 Uhr angezeigt..

Muss man in der portal_body.tpl auch was umschreiben??

Verfasst: 14.05.2005 08:22
von Helmut71
*schieb*

Verfasst: 14.05.2005 08:43
von roger
Hast du die Änderungen so gemacht, wie von mir angegeben?
Notfalls noch einmal verlinken (die geänderte Version).

roger

Verfasst: 14.05.2005 08:47
von Helmut71
@roger: ich hab mich zumindest bemüht, sie so zu machen wie von dir angegeben ;-)

Das wär jetzt der betreffende Teil der portal.php (bzw. index.php):
//show dayly users mod
$time_now=time();
$time1Hour=$time_now-3600;
$time24hour=$time_now-86400;
$minutes = date('is', $time_now);
$hour_now = $time_now - (60*($minutes[0].$minutes[1])) - ($minutes[2].$minutes[3]);
$dato=create_date('H', $time_now,$board_config['board_timezone']);
$timetoday = $hour_now - (3600*$dato);
$sql = 'SELECT session_ip, MAX(session_time) as session_time FROM '.SESSIONS_TABLE.' WHERE session_user_id="'.ANONYMOUS.'" AND session_time >= '.$timetoday.' AND session_time< '.($timetoday+86399).' GROUP BY session_ip';
$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon
FROM ' . USERS_TABLE . '
WHERE user_id != ' . ANONYMOUS . '
AND user_lastlogon >= ' . $time24hour . '
AND user_lastlogon < ' . ($time24hour+86400) . '
ORDER BY user_lastlogon';
if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve guest user today data", "", __LINE__, __FILE__, $sql);
while( $guest_list = $db->sql_fetchrow($result))
{
if ($guest_list['session_time'] >$time1Hour) $users_lasthour++;
}
$guests_today = $db->sql_numrows($result);
$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon FROM ' . USERS_TABLE . ' WHERE user_id!="'.ANONYMOUS.'" AND user_session_time >= '.$timetoday.' AND user_session_time< '.($timetoday+86399).' ORDER BY username';
if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve user today data", "", __LINE__, __FILE__, $sql);
while( $todayrow = $db->sql_fetchrow($result))
{
$style_color = "";
if ($todayrow['user_lastlogon']>=$time1Hour)
{
$users_lasthour++;
}
switch ($todayrow['user_level'])
{
case ADMIN :
$todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
break;
case MOD :
$todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
break;
}
$users_today_list.=( $todayrow['user_allow_viewonline'])?' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'>' . $todayrow['username'] . '</a>,' : (($userdata[user_level]==ADMIN) ? ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'><i>' . $todayrow['username'] . '</i></a>,' : '');
if (!$todayrow['user_allow_viewonline']) $logged_hidden_today++;
else $logged_visible_today++;
}
if ($users_today_list)
{
$users_today_list[ strlen( $users_today_list)-1] = ' ';
} else
{
$users_today_list = $lang['None'];
}
$total_users_today = $db->sql_numrows($result)+$guests_today;

$users_today_list = $lang['Registered_users'].' ' . $users_today_list;
$l_today_user_s = ($total_users_today) ? ( ( $total_users_today == 1 )? $lang['User_24_total'] : $lang['Users_24_total'] ) : $lang['Users_24_zero_total'];
$l_today_r_user_s = ($logged_visible_today) ? ( ( $logged_visible_today == 1 ) ? $lang['Reg_user_total'] : $lang['Reg_users_total'] ) : $lang['Reg_users_zero_total'];
$l_today_h_user_s = ($logged_hidden_today) ? (($logged_hidden_today == 1) ? $lang['Hidden_user_total'] : $lang['Hidden_users_total'] ) : $lang['Hidden_users_zero_total'];
$l_today_g_user_s = ($guests_today) ? (($guests_today == 1) ? $lang['Guest_user_total'] : $lang['Guest_users_total']) : $lang['Guest_users_zero_total'];
$l_today_users = sprintf($l_today_user_s, $total_users_today);
$l_today_users .= sprintf($l_today_r_user_s, $logged_visible_today);
$l_today_users .= sprintf($l_today_h_user_s, $logged_hidden_today);
$l_today_users .= sprintf($l_today_g_user_s, $guests_today);
Bau ich den aber so ein, werden gar keine User mehr angezeigt.

Verfasst: 14.05.2005 09:34
von roger
//show dayly users mod
$time_now=time();
$time1Hour=$time_now-3600;
$time24hour=$time_now-86400;
$minutes = date('is', $time_now);
$hour_now = $time_now - (60*($minutes[0].$minutes[1])) - ($minutes[2].$minutes[3]);
$dato=create_date('H', $time_now,$board_config['board_timezone']);
$timetoday = $hour_now - (3600*$dato);
$sql = 'SELECT session_ip, MAX(session_time) as session_time FROM '.SESSIONS_TABLE.' WHERE session_user_id="'.ANONYMOUS.'" AND session_time >= '.$timetoday.' AND session_time< '.($timetoday+86399).' GROUP BY session_ip';
$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon
FROM ' . USERS_TABLE . '
WHERE user_id != ' . ANONYMOUS . '
AND user_lastlogon >= ' . $time24hour . '
AND user_lastlogon < ' . ($time24hour+86400) . '
ORDER BY user_lastlogon';

if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve guest user today data", "", __LINE__, __FILE__, $sql);
while( $guest_list = $db->sql_fetchrow($result))
{
if ($guest_list['session_time'] >$time1Hour) $users_lasthour++;
}
$guests_today = $db->sql_numrows($result);
$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon FROM ' . USERS_TABLE . ' WHERE user_id!="'.ANONYMOUS.'" AND user_session_time >= '.$timetoday.' AND user_session_time< '.($timetoday+86399).' ORDER BY username';
if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve user today data", "", __LINE__, __FILE__, $sql);
while( $todayrow = $db->sql_fetchrow($result))
{
$style_color = "";
if ($todayrow['user_lastlogon']>=$time1Hour)
{
$users_lasthour++;
}
switch ($todayrow['user_level'])
{
case ADMIN :
$todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
break;
case MOD :
$todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
break;
}
$users_today_list.=( $todayrow['user_allow_viewonline'])?' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'>' . $todayrow['username'] . '</a>,' : (($userdata[user_level]==ADMIN) ? ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'><i>' . $todayrow['username'] . '</i></a>,' : '');
if (!$todayrow['user_allow_viewonline']) $logged_hidden_today++;
else $logged_visible_today++;
}
if ($users_today_list)
{
$users_today_list[ strlen( $users_today_list)-1] = ' ';
} else
{
$users_today_list = $lang['None'];
}
$total_users_today = $db->sql_numrows($result)+$guests_today;

$users_today_list = $lang['Registered_users'].' ' . $users_today_list;
$l_today_user_s = ($total_users_today) ? ( ( $total_users_today == 1 )? $lang['User_24_total'] : $lang['Users_24_total'] ) : $lang['Users_24_zero_total'];
$l_today_r_user_s = ($logged_visible_today) ? ( ( $logged_visible_today == 1 ) ? $lang['Reg_user_total'] : $lang['Reg_users_total'] ) : $lang['Reg_users_zero_total'];
$l_today_h_user_s = ($logged_hidden_today) ? (($logged_hidden_today == 1) ? $lang['Hidden_user_total'] : $lang['Hidden_users_total'] ) : $lang['Hidden_users_zero_total'];
$l_today_g_user_s = ($guests_today) ? (($guests_today == 1) ? $lang['Guest_user_total'] : $lang['Guest_users_total']) : $lang['Guest_users_zero_total'];
$l_today_users = sprintf($l_today_user_s, $total_users_today);
$l_today_users .= sprintf($l_today_r_user_s, $logged_visible_today);
$l_today_users .= sprintf($l_today_h_user_s, $logged_hidden_today);
$l_today_users .= sprintf($l_today_g_user_s, $guests_today);
Du hast hier falsch eingebaut: Der rot markierte Abschnitt ist an falscher Stelle (du hast die DB-Abfrage zusätzlich eingebaut.)

Richtig ist: Den blau markierten Teil durch den rot markierten ersetzen!

Außerdem hast du den grün markierten Teil nicht angepasst (= "1. Datenbankabfrage").


roger

Verfasst: 14.05.2005 16:45
von roger
Langer Rede....

Es muss so aussehen:

Code: Alles auswählen

//show dayly users mod
	$time_now=time();
	$time1Hour=$time_now-3600;
	$time24hour=$time_now-86400;
	$minutes = date('is', $time_now);
	$hour_now = $time_now - (60*($minutes[0].$minutes[1])) - ($minutes[2].$minutes[3]);
	$dato=create_date('H', $time_now,$board_config['board_timezone']);
	$timetoday = $hour_now - (3600*$dato);
	$sql = 'SELECT session_ip, MAX(session_time) as session_time
		FROM '.SESSIONS_TABLE.'
		WHERE session_user_id="'.ANONYMOUS.'"
			AND session_time >= '.$time24hour.'
			AND session_time< '.($time24hour+86400).'
		GROUP BY session_ip';
	if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve guest user today data", "", __LINE__, __FILE__, $sql);
	while( $guest_list = $db->sql_fetchrow($result))
	{
		if ($guest_list['session_time'] > $time1Hour) $users_lasthour++;
	}
	$guests_today = $db->sql_numrows($result);
	$sql = 'SELECT user_id,username,user_allow_viewonline,user_level,user_lastlogon
		FROM ' . USERS_TABLE . '
		WHERE user_id != ' . ANONYMOUS . '
			AND user_lastlogon >= ' . $time24hour . '
			AND user_lastlogon < ' . ($time24hour+86400) . '
		ORDER BY user_lastlogon';
	if (!$result = $db->sql_query($sql)) message_die(GENERAL_ERROR, "Couldn't retrieve user today data", "", __LINE__, __FILE__, $sql);
	while( $todayrow = $db->sql_fetchrow($result))
	{
		$style_color = "";
		if ($todayrow['user_lastlogon']>=$time1Hour)
		{
			$users_lasthour++;
		}
		switch ($todayrow['user_level'])
		{
			case ADMIN :
				$todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
		      	$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
			break;
			case MOD :
		    	$todayrow['username'] = '<b>' . $todayrow['username'] . '</b>';
	      		$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
			break;
		}
	 	$users_today_list.=( $todayrow['user_allow_viewonline'])?' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'>' . $todayrow['username'] . '</a>,' : (($userdata[user_level] == ADMIN || $userdata[user_level] == MOD || $userdata[user_jadmin] == 'yes') ? ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'><i>' . $todayrow['username'] . '</i></a>,' : '');
		if (!$todayrow['user_allow_viewonline']) $logged_hidden_today++;
		else $logged_visible_today++;
	}
	if ($users_today_list)
	{
		$users_today_list[ strlen( $users_today_list)-1] = ' ';
	}
	else
	{
		$users_today_list = $lang['None'];
	}
	$total_users_today = $db->sql_numrows($result)+$guests_today;

	$users_today_list = $lang['Registered_users'].' ' . $users_today_list;
	$l_today_user_s = ($total_users_today) ? ( ( $total_users_today == 1 )? $lang['User_24_total'] : $lang['Users_24_total'] ) : 		$lang['Users_24_zero_total'];
	$l_today_r_user_s = ($logged_visible_today) ? ( ( $logged_visible_today == 1 ) ? $lang['Reg_user_total'] : $lang['Reg_users_total'] ) : $lang['Reg_users_zero_total'];
	$l_today_h_user_s = ($logged_hidden_today) ? (($logged_hidden_today == 1) ? $lang['Hidden_user_total'] : $lang['Hidden_users_total'] ) : $lang['Hidden_users_zero_total'];
	$l_today_g_user_s = ($guests_today) ? (($guests_today == 1) ? $lang['Guest_user_total'] : $lang['Guest_users_total']) : $lang['Guest_users_zero_total'];
	$l_today_users = sprintf($l_today_user_s, $total_users_today);
	$l_today_users .= sprintf($l_today_r_user_s, $logged_visible_today);
	$l_today_users .= sprintf($l_today_h_user_s, $logged_hidden_today);
	$l_today_users .= sprintf($l_today_g_user_s, $guests_today);

roger

Verfasst: 14.05.2005 18:55
von Helmut71
hat tadellos geklappt!! Dankeschön! :-)