Seite 1 von 2

Mitglieder mit 0 Posts löschen?

Verfasst: 28.11.2002 14:19
von chrisredfield_0
Hi!

Weiß jemand wie man Mitglieder mit 0 Posts löschen kann? Vielleicht auch mit phpmyadmin oder so.. Kenn' mich da nicht so gut aus aber jeder hilfe wär' super!

Verfasst: 28.11.2002 14:24
von itst
Du musst nur die Query anpassen, die ich mit einem Kommentar markiert habe.

Ohne Gewähr :-)

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = '../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$p = $c = 0;

$con = mysql_connect ($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);

$now = time();
$days = 90;
$quar = $now - (86400*$days);

// diese query anpassen, um die user auszuwählen, die gelöscht werden sollen.
$sql = "select user_id, username, user_email, user_lastvisit, user_regdate, user_posts from " . $table_prefix . "users where user_id >0 and (user_regdate<=$quar and user_lastvisit<=$quar)";

$res = mysql_query($sql);
echo "$days Tage sind seit dem " . gmdate("d.M.Y", $quar) . " vorbei. Timestamp für diesen Tag: $quar.<br /><br />";
echo "<b>Abfrage</b>:<br /><i>$sql</i>";
echo "<h2>Seit mehr als $days Tagen nicht mehr aktive User</h2>\n";
while ($row = mysql_fetch_array($res)) {

	set_time_limit(30);

	echo gmdate("d.m.Y", $row['user_regdate']) . ":" . gmdate("d.m.Y", $row['user_lastvisit']) . $row['username'] . ": " . $row['user_email'] . ": " . $row['user_posts'] . ": ";

	$sql2 = "select count(post_id) as ps from " . $table_prefix . "posts as p where p.poster_id= " . $row['user_id'];
	$res2 = mysql_query($sql2);
	$row2 = mysql_fetch_array($res2);
	$p += $row2['ps'];
	echo $row2['ps'] . ": ";

	$c++;

	$user_id = $row['user_id'];

	$sql = "SELECT g.group_id
		FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
		WHERE ug.user_id = $user_id
			AND g.group_id = ug.group_id
			AND g.group_single_user = 1";
	if( !($result = $db->sql_query($sql)) )
	{
		echo 'Could not obtain group information for this user';
	}

	set_time_limit(30);

	$row = $db->sql_fetchrow($result);

	$sql = "UPDATE " . POSTS_TABLE . "
		SET poster_id = " . ANONYMOUS . ", post_username = '$username'
		WHERE poster_id = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not update posts for this user';
	}

	set_time_limit(30);

	$sql = "UPDATE " . TOPICS_TABLE . "
		SET topic_poster = " . ANONYMOUS . "
		WHERE topic_poster = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not update topics for this user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . USERS_TABLE . "
		WHERE user_id = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . USER_GROUP_TABLE . "
		WHERE user_id = $user_id";
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete user from user_group table';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . GROUPS_TABLE . "
		WHERE group_id = " . $row['group_id'];
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete group for this user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
		WHERE group_id = " . $row['group_id'];
	if( !$db->sql_query($sql) )
	{
		echo 'Could not delete group for this user';
	}

	set_time_limit(30);

	$sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
		WHERE user_id = $user_id";
	if ( !$db->sql_query($sql) )
	{
		echo 'Could not delete user from topic watch table';
	}

	echo 'User deleted<br />';

}
echo $c . " " . $p;
?>

Verfasst: 28.11.2002 14:27
von chrisredfield_0
danke schonmal für die schnelle Antwort, aber kannst du das noch ein bisschen präzisieren (kenn mich mit PHP wirkl nicht gut aus) wo muss ich das anpassen/einfügen?

thx

Verfasst: 28.11.2002 14:36
von itst
Nix PHP, SQL. In Zeile 13 steht die Anfrage, die genutzt wird, um die USer auszuwählen, die gelöscht werden.

Für alle 0-Poster müsste sie

Code: Alles auswählen

$sql = "select user_id, username, user_email, user_lastvisit, user_regdate, user_posts from " . $table_prefix . "users where user_id >0 and user_posts=0";
heissen.

HTH, Sascha

Verfasst: 28.11.2002 15:43
von chrisredfield_0
thx..
hab jetzt auch ein script gefunden, mit dem man 0-posts leute und inaktive automatisch löschen kann

http://www.phpbbhacks.com/viewhack.php?id=346

Verfasst: 01.12.2002 23:01
von Guido
chrisredfield_0 hat geschrieben:thx..
hab jetzt auch ein script gefunden, mit dem man 0-posts leute und inaktive automatisch löschen kann

http://www.phpbbhacks.com/viewhack.php?id=346
Weis einer mit Sicherheit, dass das auch in der 2.01 Vers. läuft ?

Verfasst: 02.12.2002 14:26
von Guido
Also ich habs dann einfach mal riskiert und - - - ES KLAPPT ! auch in Version 2.01 (Classic Style). Und das Teil ist echt super praktisch !

Verfasst: 04.10.2003 16:54
von Pansn
klappt das auch bei deutscher sprache ? (habe das 2.0.6).

Verfasst: 04.10.2003 17:28
von Schumi
Ja, funktioniert mit jeder Sprache.

Verfasst: 05.11.2004 11:56
von rocomat
Gibt es da nicht ein mod, bei dem man einen Zeitraum angeben kann, wann ein 0-poster nach x tagen gelöscht wird. Ich dachte soetwas habe ich schon malgesehen. Das wäre auch sinnvoll bei den Russen spammern.

kennt jemand solch einen Mod?