Benutzer löschen per sql-Befehl

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
bluejay
Mitglied
Beiträge: 7
Registriert: 23.12.2005 09:54
Wohnort: Frankfurt am Main

Benutzer löschen per sql-Befehl

Beitrag von bluejay »

Hallo Leute,

ich habe eine Frage:

Ist es möglich, in einem phpbb-Forum Benutzer per sql-Befehl aus der Datenbank zu löschen, oder gibt es dann Probleme, zum Beispiel mit anderen Daten in der Datenbank, die mit dem Benutzernamen verbunden sind, z.B. der Emailadresse, die dann nicht mehr neu verwendet werden kann?

Ich möchte gerade mein Forum umstrukturieren und alle Benutzer löschen, die nicht einer bestimmten Benutzergruppe angehören (die in der Gruppe sind die einzigen, die das Forum im Moment noch aktiv nutzen, da ich irgendwann alles außer dem "privaten" Teil des Forums geschlossen habe).

Anstatt nun über 900 Benutzer per Hand zu löschen habe ich mich gefragt, ob man das nicht auch per sql-Befehl kann. Leider kenne ich mich mit sql nicht allzu gut aus und habe Angst, was kaputtzumachen.

Es geht wie gesagt darum, alle Benutzer zu löschen, die nicht einer bestimmten Benutzergruppe angehören. Kann mir jemand den sql-Befehl dafür nennen?

Vielleicht gibt es ja auch einen MOD, mit dem man so was machen kann, wenn jemand einen Hinweis hat, wäre ich dankbar. Habe aber noch nichts entsprechendes gefunden.

Kann mir jemand weiterhelfen?

Danke, auch für dieses tolle Forum und Frohe Weihnachten!
:grin:

Matthias
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Mit einem Query geht das nicht, du könntest das allerdings von einem php-Script erledigen lassen...
In der groupcp.php findest du ein Query, um alle Benutzer einer Gruppe auflisten zu lassen. Das musst du ein bisschen abändern, sodass es alle Benutzer anzeigt, die nicht zu dieser Gruppe gehören. Dann musst du nur noch auf jeden Benutzer die Lösch-Query's aus der admin/admin_users.php anwenden.

ursprünglicher Code:

Code: Alles auswählen

	//
	// Get user information for this group
	//
	$sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, ug.user_pending 
		FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
		WHERE ug.group_id = $group_id
			AND u.user_id = ug.user_id
			AND ug.user_pending = 0 
			AND ug.user_id <> " . $group_moderator['user_id'] . " 
		ORDER BY u.username"; 
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
	}

	$group_members = $db->sql_fetchrowset($result); 
	$members_count = count($group_members);
	$db->sql_freeresult($result);
abgeändert könnte das dann ungefähr so aussehen:

Code: Alles auswählen

	$group_id = <deineGruppenID>;
	//
	// Get user information for this group
	//
	$sql = "SELECT u.user_id 
		FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
		WHERE ug.group_id = $group_id
			AND u.user_id <> ug.user_id
			AND ug.user_pending = 0"; 
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
	}

	while ($row = $db->sql_fetchrow($result));
	{
		<deinLöschbefehl>
	}
	$db->sql_freeresult($result);
An die Stelle von <deineGruppenID> kommt die ID der Gruppe, deren Mitglieder nicht gelöscht werden sollen. An die Stelle von <deinLöschbefehl> kommt der Befehl zum Löschen des Users (siehe admin/admin_users.php).

Hinweis: Der Code ist absolut ungetestet, deswegen solltest du ihn zuerst an einem lokalen Forum o.Ä. testen. :wink:

Edit: Sorry, ich hab grad gemerkt, dass das gar nicht funktioniert. :oops: Ich überlege mir was anderes... :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Und nächster Versuch (dieses Mal sogar getestet): http://www.s2b-project.de/files/user_delete.php.txt :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
bluejay
Mitglied
Beiträge: 7
Registriert: 23.12.2005 09:54
Wohnort: Frankfurt am Main

Beitrag von bluejay »

Dank Dir!

Das werde ich gleich mal testen!

Liebe Grüße

Matthias
bluejay
Mitglied
Beiträge: 7
Registriert: 23.12.2005 09:54
Wohnort: Frankfurt am Main

Beitrag von bluejay »

Hallo!

Bin doch erst jetzt (nach Weihnachten) dazu gekommen, mir das näher anzuschauen.

Wie genau kann ich das nun anwenden? (Sorry, wenn die Frage blöd scheint, bin noch Neuling mit php.)

Kann ich die php-Datei (nach Entfernen der .txt-Endung) auf meinen Webspace hochladen, und sie dann über den Internet-Explorer aufrufen, nachdem ich mich als Admin in meinem Forum eingeloggt habe?

Oder wie macht man so etwas?

Viele Grüße und vielen Dank!
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Genau so machst du es. Vorher musst du nur noch die Variable $group_id in der Datei anpassen. In ihr muss die Gruppe stehen, deren Mitglieder nicht gelöscht werden sollen. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

Hi .. ohne dass ich mir das angesehen hätte :oops:
Du hast schon daran gedacht, dass auch die Zuordnungen zu den "persönlichen Gruppen" in der phpbb_user_group-Tabelle bereinigt werden sollten :roll:

Nur so als Erinnerung ...
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

S2B hat geschrieben:[...] Dann musst du nur noch auf jeden Benutzer die Lösch-Query's aus der admin/admin_users.php anwenden. [...]
no comment. :roll:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

Hey .. das war nicht böse gemeint! Und ich hatte ja extra darauf hingewiesen, dass ich mir die konkrete Lösung nicht angesehen hatte.

Mir fehlte nur beim Überfliegen der Hinweis auf dieses "Problem" deshalb mein nett gemeinter Tipp. Sorry, wenn das falsch rüberkam!

Gruss,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

mad-manne hat geschrieben:Sorry, wenn das falsch rüberkam!
Es kam absolut gar nicht falsch rüber. Nur fände ich es ganz gut, wenn du vorher meinen Beitrag durchlesen würdest, denn dort wurde ja darauf hingewiesen (dass du dir die Lösung anschaust, verlangt ja niemand :wink: ).
Abgesehen davon ist das Benutzergruppen-"Problem" bei weitem nicht das einzige, was zusätzlich beachtet werden muss, denn sonst wäre das Löschen eines Benutzers nur mit einfachen Queries kein Problem. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“