stat_modules: einzelne user aus der statistik nehmen

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
naptune
Beiträge: 53
Registriert: Mo 01.Aug, 2005 15:30
Kontaktdaten:

stat_modules: einzelne user aus der statistik nehmen

Beitrag von naptune »

Deine phpBB Version: Vanilla phpBB 2.0.17
MODs: Nein
Dein Wissensstand: Grundwissen
Link zu Deinem Forum: [url]http://[/url]

PHP Version:
MySQL Version:


Was hast Du gemacht, bevor das Problem aufgetreten ist?



Was hast Du bereits versucht um das Problem zu lösen?




Fehlerbeschreibung und Nachricht

Hallo,

hätt da schon wieder ein kleines Anliegen:
Ich möchte aus den site_hist_month_top_posters und site_hist_week_top_posters modulen einen user rausnehmen.
Dieser User (der Quiz-Bot) sollte also nicht in der Statistik aufgeführt werden.

Könnte mir bitte jemand den Code entsprechend ändern?

Danke!!

Code: Alles auswählen

<?php
/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

//
// Top Posting Users This Week (History Mod adaption)
//
$statistics->init_bars();

$month = array();
$current_time = time();
$year = create_date('Y', $current_time, $board_config['board_timezone']);
$month [0] = mktime (0,0,0,1,1, $year);
$month [1] = $month [0] + 2678400;
$month [2] = mktime (0,0,0,3,1, $year);
$month [3] = $month [2] + 2678400;
$month [4] = $month [3] + 2592000;
$month [5] = $month [4] + 2678400;
$month [6] = $month [5] + 2592000;
$month [7] = $month [6] + 2678400;
$month [8] = $month [7] + 2678400;
$month [9] = $month [8] + 2592000;
$month [10] = $month [9] + 2678400;
$month [11] = $month [10] + 2592000;
$month [12] = $month [11] + 2592000;
$arr_num = (date('n')-1);
$time_thismonth = $month[$arr_num];

$l_this_month = create_date('F', $time_thismonth, $board_config['board_timezone']);

$template->assign_vars(array(
	'L_MODULE_NAME' => $lang['module_name'],
	'MONTH' => sprintf($lang['Month'], ($l_this_month . ' ' . create_date('Y', $time_thismonth, $board_config['board_timezone'])) ),
	'L_RANK' => $lang['Rank'],
	'L_PERCENTAGE' => $lang['Percent'],
	'L_GRAPH' => $lang['Graph'],
	'L_USERNAME' => $lang['Username'],
	'L_POSTS' => $lang['Posts'])
);

$sql = "select u.user_id, u.username, count(u.user_id) as user_posts  
FROM " . USERS_TABLE . " u, " . POSTS_TABLE . " p 
WHERE (u.user_id = p.poster_id) AND (p.post_time > '" . $time_thismonth . "') AND (u.user_id <> " . ANONYMOUS . ")
GROUP BY user_id, username
ORDER BY user_posts DESC
LIMIT " . $return_limit;

if ( !($result = $stat_db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, "Couldn't retrieve topposters data", "", __LINE__, __FILE__, $sql);
}

$total_posts_thismonth = 0;
$user_count = $stat_db->sql_numrows($result);
$user_data = $stat_db->sql_fetchrowset($result);
$firstcount = $user_data[0]['user_posts'];

for ($i = 0; $i < $user_count; $i++)
{
	$total_posts_thismonth += $user_data[$i]['user_posts'];
}

for ($i = 0; $i < $user_count; $i++)
{
	$class = ($i % 2) ? $theme['td_class2'] : $theme['td_class1'];
	
	$statistics->do_math($firstcount, $user_data[$i]['user_posts'], $total_posts_thismonth);

	$template->assign_block_vars('top_posters', array(
		'RANK' => $i+1,
		'CLASS' => $class,
		'USERNAME' => $user_data[$i]['username'],
		'PERCENTAGE' => $statistics->percentage,
		'BAR' => $statistics->bar_percent,
		'URL' => append_sid($phpbb_root_path . 'profile.php?mode=viewprofile&u=' . $user_data[$i]['user_id']),
		'POSTS' => $user_data[$i]['user_posts'])
	);
}

?>
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

$sql = "select u.user_id, u.username, count(u.user_id) as user_posts
FROM " . USERS_TABLE . " u, " . POSTS_TABLE . " p
WHERE (u.user_id = p.poster_id) AND (p.post_time > '" . $time_thismonth . "') AND (u.user_id <> " . ANONYMOUS . ")
GROUP BY user_id, username
ORDER BY user_posts DESC
LIMIT " . $return_limit;
Diese Anweisung halt.
Füge nach

Code: Alles auswählen

AND (u.user_id <> " . ANONYMOUS . ")
noch das hier an:

Code: Alles auswählen

AND p.poster_id <> X
wobei X für die User-ID des auszugrenzenden Users steht.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
naptune
Beiträge: 53
Registriert: Mo 01.Aug, 2005 15:30
Kontaktdaten:

Beitrag von naptune »

Wie immer bei Oxpus:
schnell und korrekt

THX

EDIT:

wie muß es hier aussehen?

Code: Alles auswählen

$sql = "SELECT SUM(user_posts) as total_posts FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS; 
Zuletzt geändert von naptune am Di 27.Sep, 2005 16:05, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

$sql = "SELECT SUM(user_posts) as total_posts FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS ."
AND user_id <> X;
X wieder für die User-ID, den man ausgrenzen will.
Wie immer bei Oxpus:
schnell und korrekt
Naja, ist ja noch einfach gewesen. Es gibt darüber hinaus aber eine Menge, das ich nicht mehr so einfach beantworten kann...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
naptune
Beiträge: 53
Registriert: Mo 01.Aug, 2005 15:30
Kontaktdaten:

Beitrag von naptune »

Jetzt bringt er einen Parse-Error:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /XXX/phpBB2/stat_modules/top_posters/module.php on line 54
Hier mal der ganze Code

Code: Alles auswählen

<?php
/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

// DB Cache used here

//
// Top Posting Users
//
$template->assign_vars(array(
	'L_RANK' => $lang['Rank'],
	'L_POSTS' => $lang['Posts'],
	'L_PERCENTAGE' => $lang['Percent'],
	'L_USERNAME' => $lang['Username'],
	'L_GRAPH' => $lang['Graph'],
	'MODULE_NAME' => $lang['module_name'])
);

// 
// Method 1 to define Vote Bars: Define the Images
//
/*
$bars = array(
	'left' => 'images/vote_lcap.gif',
	'right' => 'images/vote_rcap.gif',
	'bar' => 'images/voting_bar.gif'
);

$statistics->init_bars($bars);
*/

//
// Method 2 to define Vote Bars: Let the Statistics Mod define default Bars
//
$statistics->init_bars();

$sql = "SELECT SUM(user_posts) as total_posts FROM " . USERS_TABLE . "
 WHERE user_id <> " . ANONYMOUS ."
 AND user_id <> 70;

if ( !($result = $stat_db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Couldn\'t retrieve users data', '', __LINE__, __FILE__, $sql);
}

$row = $stat_db->sql_fetchrow($result);
//$total_posts = get_db_stat('postcount');
$total_posts = $row['total_posts'];

$sql = 'SELECT user_id, username, user_posts 
FROM ' . USERS_TABLE . ' 
WHERE (user_id <> ' . ANONYMOUS . ' ) AND (user_posts > 0) 
ORDER BY user_posts DESC 
LIMIT ' . $return_limit;

if ( !($result = $stat_db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Couldn\'t retrieve users data', '', __LINE__, __FILE__, $sql);
}

$user_count = $stat_db->sql_numrows($result);
$user_data = $stat_db->sql_fetchrowset($result);

$firstcount = $user_data[0]['user_posts'];

for ($i = 0; $i < $user_count; $i++)
{
	$class = ($i % 2) ? $theme['td_class2'] : $theme['td_class1'];

	$statistics->do_math($firstcount, $user_data[$i]['user_posts'], $total_posts);

	$template->assign_block_vars('users', array(
		'RANK' => $i+1,
		'CLASS' => $class,
		'USERNAME' => $user_data[$i]['username'],
		'PERCENTAGE' => $statistics->percentage,
		'BAR' => $statistics->bar_percent,
		'URL' => append_sid($phpbb_root_path . 'profile.php?mode=viewprofile&u=' . $user_data[$i]['user_id']),
		'POSTS' => $user_data[$i]['user_posts'])
	);
}

?>
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öh ja, nach der User-ID muss auch noch ein Hochkomma " rein.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
naptune
Beiträge: 53
Registriert: Mo 01.Aug, 2005 15:30
Kontaktdaten:

Beitrag von naptune »

so?

Code: Alles auswählen

$sql = "SELECT SUM(user_posts) as total_posts FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS ."
AND user_id <> 70';
Falls ja: geht auch nicht
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Kein einfaches Hochkomma, sondern ein doppeltes!
Also nicht sondern Das über der "2"!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
naptune
Beiträge: 53
Registriert: Mo 01.Aug, 2005 15:30
Kontaktdaten:

Beitrag von naptune »

Also so

Code: Alles auswählen

$sql = "SELECT SUM(user_posts) as total_posts FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS ."
AND user_id <> 70";
Geht aber auch nicht, der parse-error ist dann zwar weg, der betreffende user aber weiterhin in der liste
Zuletzt geändert von naptune am Di 27.Sep, 2005 21:47, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dann schau nochmal in Beitrag #2 ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
naptune
Beiträge: 53
Registriert: Mo 01.Aug, 2005 15:30
Kontaktdaten:

Beitrag von naptune »

Hmm....sind ja 2 SQL-Befehle enthalten.
Also einmal mit Hochkomma, einmal wie in Beitrag 2, dann gehts !

THX
Antworten