[Erledigt]Thread nach 24h gelöscht und wieder neu erstellt
[Erledigt]Thread nach 24h gelöscht und wieder neu erstellt
Hallo,
ich habe in meinem Forum eine Offtopic Abteilung und ein Thread alla "Sondermüll" wo die Leute halt Nonsens reinschreiben können was auch sehr genutzt wird. Bin auch froh drüber, da die Benutzer halt jede Menge sonst im Offtopic posten würden.
Also mein Problem ist das ich oder die Mods den Thread Sondermüll leider immer per Hand aller 24h löschen muss und mit den gleichen ersten Beitrag neu erstellen muss.
Haben wenige in den Thread gepostet lohnt es sich auch manchmal Beitragsweise zu löschen weils halt nur 3 Postings sind oder.
Nun ja wie kann ich das nun ein wenig vereinfachen?
Ich denke ich brauche da ein PHP Script und dann ein Cronjob?
Habe das hier gefunden....
http://www.phpbb.com/phpBB/viewtopic.php?t=45535
Leiderr bin ich nicht gut in Englisch aber mit dem und den Pruning von phpBB müsste es doch glatt funktionieren oder?
Sorry aber die Forensuche hier hat mir alles mögliche gezeigt aber es war nix 100% iges dabei. (Vielleicht die falschen Suchwörter?)
Vielen Dank für Eure hilfe.
LG René
ich habe in meinem Forum eine Offtopic Abteilung und ein Thread alla "Sondermüll" wo die Leute halt Nonsens reinschreiben können was auch sehr genutzt wird. Bin auch froh drüber, da die Benutzer halt jede Menge sonst im Offtopic posten würden.
Also mein Problem ist das ich oder die Mods den Thread Sondermüll leider immer per Hand aller 24h löschen muss und mit den gleichen ersten Beitrag neu erstellen muss.
Haben wenige in den Thread gepostet lohnt es sich auch manchmal Beitragsweise zu löschen weils halt nur 3 Postings sind oder.
Nun ja wie kann ich das nun ein wenig vereinfachen?
Ich denke ich brauche da ein PHP Script und dann ein Cronjob?
Habe das hier gefunden....
http://www.phpbb.com/phpBB/viewtopic.php?t=45535
Leiderr bin ich nicht gut in Englisch aber mit dem und den Pruning von phpBB müsste es doch glatt funktionieren oder?
Sorry aber die Forensuche hier hat mir alles mögliche gezeigt aber es war nix 100% iges dabei. (Vielleicht die falschen Suchwörter?)
Vielen Dank für Eure hilfe.
LG René
Zuletzt geändert von der-rene am 26.10.2006 21:56, insgesamt 1-mal geändert.
Hm,
was hältst Du von der Idee, Postings in diesem Thread löschen zu lassen, die > 24h drin sind?
So bleiben die Postings noch etwas stehen und werden nicht gleich gelöscht, wenn der User um 23:59 Uhr gepostet hat und der Job um 24:00 Uhr durchläuft.
was hältst Du von der Idee, Postings in diesem Thread löschen zu lassen, die > 24h drin sind?
So bleiben die Postings noch etwas stehen und werden nicht gleich gelöscht, wenn der User um 23:59 Uhr gepostet hat und der Job um 24:00 Uhr durchläuft.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
mach doch den mutliple delete mod damit können die mods mehrere beitrge auf einmal löschen ist hauptsache ne verbesserung oder klick auf thema splitten button unten links (haupsächlich) und dann bei den 2ten beitrag (1te antwort) nen hacken machen und dann Titel eingeben und dannach ab gewählten hema teilen klicken
dann wird das erste post da bleiben und die restlichen (die dannach kommenden) werden in einem nuen therad erscheinen
und dann auf therad löschen gehen!!
dann wird das erste post da bleiben und die restlichen (die dannach kommenden) werden in einem nuen therad erscheinen
und dann auf therad löschen gehen!!
Danke für den Mod und schon eingebautSoLo1905 hat geschrieben:mach doch den mutliple delete mod damit können die mods mehrere beitrge auf einmal löschen ist hauptsache ne verbesserung oder klick auf thema splitten button unten links (haupsächlich) und dann bei den 2ten beitrag (1te antwort) nen hacken machen und dann Titel eingeben und dannach ab gewählten hema teilen klicken
dann wird das erste post da bleiben und die restlichen (die dannach kommenden) werden in einem nuen therad erscheinen
und dann auf therad löschen gehen!!

gut ich kann je nachdem wieviel geschrieben wurde, nun 2 oder 55-80 Haken setzen und gleichzeitig löschen. schonmal ein Fortschritt.
Kann man das nicht noch ein bissel automatisieren?
LG rené
So, jetzt habe ich mal etwas gebastelt.
Dieser Code löscht alle Postings bis auf die letzten 10 in einem Topic, das Du noch eintragen musst (es wird die Topic_ID eingetragen). Die von mir benutzte 22 musst Du noch ändern!
Es wurde also die Menge der Postings begrenzt, ohne auf die Postingzeit zu achten.
Das Eröffnungsposting bleibt zusätzlich bestehen; kannst Du also gern als Ankündigung oder so eintragen.
Wenn Du es raushaben möchtest, kommentiere array_shift($kill_post); aus.
Vllt solltest Du das ganze als Funktion in die viewtopic.php einbinden und dann mit dem Topic als Parameter für die (evtl.) mehrfachen Topics aufrufen lassen.
Und wie immer gilt: Keine Garantie auf Funktion, trotz Selbstversuch.
Dieser Code löscht alle Postings bis auf die letzten 10 in einem Topic, das Du noch eintragen musst (es wird die Topic_ID eingetragen). Die von mir benutzte 22 musst Du noch ändern!
Es wurde also die Menge der Postings begrenzt, ohne auf die Postingzeit zu achten.
Das Eröffnungsposting bleibt zusätzlich bestehen; kannst Du also gern als Ankündigung oder so eintragen.
Wenn Du es raushaben möchtest, kommentiere array_shift($kill_post); aus.
Vllt solltest Du das ganze als Funktion in die viewtopic.php einbinden und dann mit dem Topic als Parameter für die (evtl.) mehrfachen Topics aufrufen lassen.
Code: Alles auswählen
// Parameter für Topic_ID
$topic_to_clean = 22;
// Parameter für minimale Postinganzahl im Topic
$j = 10;
$posts_to_kill = '';
$sql = "SELECT post_id
FROM `" . $table_prefix . "posts`
WHERE `topic_id` = '" . $topic_to_clean . "'
ORDER BY post_id ASC";
if ( !($result = $db->sql_query($sql)) ) {
message_die(GENERAL_ERROR, 'Konnte die Postdaten nicht auslesen', '', __LINE__, __FILE__, $sql);
}
$kill_post = array();
while ( $row = $db->sql_fetchrow($result) ) {
$kill_post[] = $row['post_id'];
}
array_shift($kill_post);
if (count($kill_post) > $j) {
for ($i=0; $i<(count($kill_post)-$j); $i++) {
$posts_to_kill .= (($i+1)<(count($kill_post)-$j)) ? ($kill_post[$i] . ",") : $kill_post[$i];
}
$sql = array();
$sql[] = "DELETE FROM `" . $table_prefix . "posts_text`
WHERE `post_id` IN ($posts_to_kill)";
$sql[] = "DELETE FROM `" . $table_prefix . "posts`
WHERE `post_id` IN ($posts_to_kill)";
for( $i = 0; $i < count($sql); $i++ ) {
if( !$result = $db->sql_query ($sql[$i]) ) {
$error = $db->sql_error();
}
}
}
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
@ Miriam,
Danke dein Script funktioniert soweit.
Nun habe das Script eingebaut tut auch hervoragend seinen Job.
Leider isses doch ein Problem mit der "Löschzeit".
Drum habe ich 2 Versionen von der viewtopic.php.
Damit die ganze sache einigermasen funktioniert, musste ich ein Cronjob anlegen der die Dateien zw 6 und 7 Uhr austauscht.

Wobei ich abhängig davon bin das jemand was schreibt damit dieser code funktioniert.
@ all
ich habe hier:
$kill_post = array();
while ( $row = $db->sql_fetchrow($result) ) {
$kill_post[] = $row['post_id'];
}
array_shift($kill_post);
if (count($kill_post) > $j) {
for ($i=0; $i<(count($kill_post)-$j); $i++) {
$posts_to_kill .= (($i+1)<(count($kill_post)-$j)) ? ($kill_post[$i] . ",") : $kill_post[$i];
}
$sql = array();
$sql[] = "DELETE FROM `" . $table_prefix . "posts_text`
WHERE `post_id` IN ($posts_to_kill)";
$sql[] = "DELETE FROM `" . $table_prefix . "posts`
WHERE `post_id` IN ($posts_to_kill)";
for( $i = 0; $i < count($sql); $i++ ) {
if( !$result = $db->sql_query ($sql[$i]) ) {
$error = $db->sql_error();
}
}
}
die Vermutung das ich ne Zeitschleife einbauen müsste. (wenn ich es doch könnte)
Ja wo nimmt man aber die Faktoren her?
Dachte ich mir halt
ich nehme "Zeit jetzt" minus 24 h = Ausganzeit -> lösche alle Postings die älter als zb: "Verfasst am: 22.10.2006 12:17" sind.
In der Datenbank müsste doch "Verfasst am: 22.10.2006 12:17" unter phpbb_post Tablle finden, die doch in dem Feld post_time abgespeichert ist.
Das ist alles meine Vermutung.
Wo kann ich am besten Zielgerichtet durchs Internet Php lernen?
Leider kann ich es nicht
würde ich ja so gerne denn dann bräuchte ich ned vielleicht solche naiven/dummen Fragen stellen.
Vielen Dank für Eure Hilfe
LG René
Danke dein Script funktioniert soweit.
Nun habe das Script eingebaut tut auch hervoragend seinen Job.
Leider isses doch ein Problem mit der "Löschzeit".
Drum habe ich 2 Versionen von der viewtopic.php.
Damit die ganze sache einigermasen funktioniert, musste ich ein Cronjob anlegen der die Dateien zw 6 und 7 Uhr austauscht.

Wobei ich abhängig davon bin das jemand was schreibt damit dieser code funktioniert.
@ all
ich habe hier:
$kill_post = array();
while ( $row = $db->sql_fetchrow($result) ) {
$kill_post[] = $row['post_id'];
}
array_shift($kill_post);
if (count($kill_post) > $j) {
for ($i=0; $i<(count($kill_post)-$j); $i++) {
$posts_to_kill .= (($i+1)<(count($kill_post)-$j)) ? ($kill_post[$i] . ",") : $kill_post[$i];
}
$sql = array();
$sql[] = "DELETE FROM `" . $table_prefix . "posts_text`
WHERE `post_id` IN ($posts_to_kill)";
$sql[] = "DELETE FROM `" . $table_prefix . "posts`
WHERE `post_id` IN ($posts_to_kill)";
for( $i = 0; $i < count($sql); $i++ ) {
if( !$result = $db->sql_query ($sql[$i]) ) {
$error = $db->sql_error();
}
}
}
die Vermutung das ich ne Zeitschleife einbauen müsste. (wenn ich es doch könnte)
Ja wo nimmt man aber die Faktoren her?
Dachte ich mir halt
ich nehme "Zeit jetzt" minus 24 h = Ausganzeit -> lösche alle Postings die älter als zb: "Verfasst am: 22.10.2006 12:17" sind.
In der Datenbank müsste doch "Verfasst am: 22.10.2006 12:17" unter phpbb_post Tablle finden, die doch in dem Feld post_time abgespeichert ist.
Das ist alles meine Vermutung.
Wo kann ich am besten Zielgerichtet durchs Internet Php lernen?
Leider kann ich es nicht

Vielen Dank für Eure Hilfe
LG René
Irgendwie verstehe ich nicht, warum es soooo wichtig ist, dass der Inhalt des Threads nach 24 h gelöscht wird. Die Maximalpostzahl vom 10 ist (meiner Meinung nach) okay. Egal wie viel gepostet wird.Wobei ich abhängig davon bin das jemand was schreibt damit dieser code funktioniert.
Du kannst sie ja auf 0 Folgepostings setzen, dann sind immer 24h um... sozusagen.
Aber was ist das dann für ein Thread, wenn eh nix drin steht?
Du kannst Die Codeanpassungen (also die SQL Abfragen) separat als PHP Datei schreiben und per Cronscript um soundso viel Uhr ausführen lassen....
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
So hier ist mal ein richtig schönes Beispiel.
http://heirats-freu.de/phpBB2/viewtopic.php?t=22642
Username phBB
Passwort phpBB
Wie schon gesagt in diesen Thread können die Leute nach herzenslust
"rumspammen".
Wein Chat wäre zuviel für die Leute und ansonsten kommt in "Offtopic" jede Menge Threads zusammen die eigent lich in ein Thread gehören würde.
Na wie dem auch sein diese Funktion ist mir halt wichtig, damit ich ned aller 24h selbst Hand anlegen muss.
LG René
http://heirats-freu.de/phpBB2/viewtopic.php?t=22642
Username phBB
Passwort phpBB
Wie schon gesagt in diesen Thread können die Leute nach herzenslust
"rumspammen".
Wein Chat wäre zuviel für die Leute und ansonsten kommt in "Offtopic" jede Menge Threads zusammen die eigent lich in ein Thread gehören würde.
Na wie dem auch sein diese Funktion ist mir halt wichtig, damit ich ned aller 24h selbst Hand anlegen muss.
LG René
Also dann probiere das per Cronscript auszuführen:
Es funktioniert schon so, wie Du es willst. Komischerweise hat es bei mir den Thread nicht mehr angezeigt, nachdem das Script ausgeführt wurde. Nachdem ich es explizit mit viewtopic.php?t=22 (also bei mir ID 22) aufgerufen habe, konnte ich es wieder sehen in der Übersicht.
Bis jetzt habe ich nicht rausgefunden, wieso das so passiert.
Code: Alles auswählen
<?php
// hier den relativen Pfad zur config.php des Forums eintragen
include ("./phpBB2/config.php");
// Parameter für Topic_ID ANPASSEN!!
$topic_to_clean = 22;
// Parameter für minimale Postinganzahl im Topic.
// Es bleibt nur das Starterposting erhalten.
$j = 0;
/*** DO NOT CHANGE CODE BEYOND THIS LINE ***/
$db = @MYSQL_CONNECT($dbhost,$dbuser,$dbpasswd)
or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($dbname);
$posts_to_kill = '';
$sql = "SELECT post_id
FROM `" . $table_prefix . "posts`
WHERE `topic_id` = '" . $topic_to_clean . "'
ORDER BY post_id ASC";
if ( !($result = mysql_query($sql)) ) {
message_die(GENERAL_ERROR, 'Konnte die Postdaten nicht auslesen', '', __LINE__, __FILE__, $sql);
}
$kill_post = array();
while ( $row = mysql_fetch_array($result) ) {
$kill_post[] = $row['post_id'];
}
array_shift($kill_post);
if (count($kill_post) > $j) {
for ($i=0; $i<(count($kill_post)-$j); $i++) {
$posts_to_kill .= (($i+1)<(count($kill_post)-$j)) ? ($kill_post[$i] . ",") : $kill_post[$i];
}
$sql = array();
$sql[] = "DELETE FROM `" . $table_prefix . "posts_text`
WHERE `post_id` IN ($posts_to_kill)";
$sql[] = "DELETE FROM `" . $table_prefix . "posts`
WHERE `post_id` IN ($posts_to_kill)";
for( $i = 0; $i < count($sql); $i++ ) {
if( !$result = mysql_query ($sql[$i]) ) {
$error = mysql_error();
}
}
}
$db_close = @MYSQL_CLOSE($db);
?>
Bis jetzt habe ich nicht rausgefunden, wieso das so passiert.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen