WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 27.04.2021 15:36:43

florian
Administrator

Miniform Cleaner

Ich habe hier ein ganz rudimentäres Modul zusammengeschustert, mit dem sich Miniform-Einträge löschen lassen. Man gibt die Abschnitts-ID an und das Alter, dass die Einträge maximal haben dürfen, und ab dafür. Die Einträge werden dann unwiderruflich und -bringlich vernichtet.

Das ganze ist eher als frühe Alpha zu verstehen, also noch mit hartcodierten Texten, wenig Fehlertoleranz etc.

Ich wollte eigentlich auch die Möglichkeit anbieten "Lösche alle bis auf die neuesten X Einträge", aber überraschenderweise scheint so etwas mit mysql ziemlich kompliziert zu sein, jedenfalls führten meine Copy-&-Paste-from-Stackoverflow-Versuche nicht zum Erfolg. Vielleicht mag sich das mal wer mit mehr Sachverstand als ich anschauen?

Weiterhin kann man da auch Unsinnswerte eintragen, also nicht existierende Abschnitts-IDs und unzutreffende Zeiträume und es wird trotzdem "Erfolgreich" angezeigt, auch wenn nichts gelöscht wurde, weil ja kein SQL-Fehler aufgetreten ist. Es wäre praktisch, wenn da stattdessen "0 Einträge gelöscht" oder "42 Einträge gelöscht" o.ä. erschiene.

Last but not least muss das nicht mal als Standalone-Admintoool laufen, sondern die Lösch-Funktionalität kann (eleganter) gern auch direkt in Miniform oder Miniformoverview implementiert werden, ich wollte da nur niemanden bei der Modulentwicklung in die Quere kommen.

Edit: Anhang entfernt, supertolle Version 0.2 unten

Beitrag geändert von florian (27.04.2021 19:21:48)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

byteworker

#2 27.04.2021 16:34:59

berny
Mitglied

Re: Miniform Cleaner

DELETE FROM ".TABLE_PREFIX."mod_miniform_data  WHERE section_id = ".$admin->get_post("deleteSecId")."  ORDER BY date ASC LIMIT 10;

Wobei 10 die letzten Einträge sein sollten.

teste mal, ist nicht sicher, ob das so passt

Offline

#3 27.04.2021 19:18:53

florian
Administrator

Re: Miniform Cleaner

Danke. Das war's noch nicht - habe dann aber doch noch auf Stackoverflow etwas Passendes gefunden.
Mit diesem absolut selbsterklärenden Query (haha)

$database->query("
DELETE from ".TABLE_PREFIX."mod_miniform_data 
  WHERE `section_id`=".intval($admin->get_post("deleteSecId"))." 
  AND `message_id` <  (SELECT `message_id` 
  FROM  
     (SELECT `message_id` 
      FROM ".TABLE_PREFIX."mod_miniform_data
      ORDER BY `message_id` 
     DESC LIMIT ".$admin->get_post("amountDelete").")
 t ORDER BY `message_id` ASC LIMIT 1)");

funktioniert's. Rätsel und Wunder.

Habe auch noch was eingebaut, so dass nur noch tatsächliche Miniform-Abschnitte zur Auswahl gestellt werden.
Und das BE zumindest ent-tabellisiert.

attachment.php?item=2913&download=1

Beitrag geändert von florian (04.05.2021 09:19:17)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

stefanek, berny, jean

Fußzeile des Forums

up