Ergebnis 1 bis 7 von 7

Thema: Inhalte direkt in der Datenbank ändern

  1. #1
    Contao-Nutzer
    Registriert seit
    18.07.2016.
    Beiträge
    61

    Standard Inhalte direkt in der Datenbank ändern

    Hallo Leute,

    ein bisschen was Spezielles zur Contao-Datenbank; konkret geht es um Folgendes: Ich möchte den Namen einer CSS-Klasse, die ich auf recht vielen Unterseiten verwende, ändern. Direkt in der Datenbank wäre das mit 'Suchen & Ersetzen' ein Leichtes, so müsste ich auch nicht jedes Objekt anklicken und manuell ändern. Die Frage ist nun, ob ein direktes Ändern von solchen Werten innerhalb der Datenbank irgendwelche Probleme verursacht? Eigentlich müsste es funktionieren, wenn die Datenbank Werte bzw. Inhalte nicht an anderer Stelle doppelt anlegt - aber so genau kenne ich die Contao-Datenbank nicht.

    Danke euch schon mal!

    Grüße

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.318
    Partner-ID
    10107

    Standard

    Prinzipiell ist das möglich. Sieh dir die Werte in der Datenbank einfach mal an.

  3. #3
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Wenn ich das richtig im Kopf habe, speicher Contao die ID zusammen mit den CSS-Klassen im gleichen DB-Feld als serialisiertes Array ab. Wenn die neue Klasse nicht die gleiche Anzahl Buchstaben hat, würde ich das suchen ersetzen via Datenbank lassen

    Mit einem Script sollte man aber alle entsprechenden Datensätze aus der DB-Laden können, das Array durch unserialize jagen, mit replace deine Klasse ersetzen und das neue serialisierte Array wieder in die DB abspeichern.

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.318
    Partner-ID
    10107

    Standard

    Wenn ein Element die CSS Klasse "foo" hat (und keine ID), dann steht bspw.
    Code:
    a:2:{i:0;s:0:"";i:1;s:3:"foo";}
    In der Datenbank. Wenn man das mit "lorem" ersetzen will, ersetzt man diesen String also einfach mit
    Code:
    a:2:{i:0;s:0:"";i:1;s:5:"lorem";}
    Nicht so einfach geht es, wenn Elemente mehr als nur eine CSS Klasse haben.

  5. #5
    Contao-Nutzer
    Registriert seit
    18.07.2016.
    Beiträge
    61

    Standard

    Danke ihr beiden! Das sind genau die Fallstricke, die ich befürchtet hatte :-). Allerdings will ich nur inline-Elemente (spans) ersetzen; diese kommen bei mir nur innerhalb des Textes eines Inhaltselements vor und dürften von Contao dann eigentlich auch nur wie Text betrachtet werden. Da dürften doch deine Befürchtungen Thraile nicht zum Tragen kommen oder? :-)
    Geändert von berha (21.11.2016 um 20:58 Uhr)

  6. #6
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Yupp, da sollte das kein Problem sein und mit einem SQL-Query zu regeln sein.
    Code:
    UPDATE tl_content SET text =  REPLACE(text, 'alteKlasse', 'neueKlasse')
    Natürlich ungetestet und Backup nicht vergessen

  7. #7
    Contao-Nutzer
    Registriert seit
    18.07.2016.
    Beiträge
    61

    Standard

    Danke für den Befehl, Thraile. Den hatte ich auch im Hinterkopf. Ich werds mal versuchen, wobei es ja auch ne nette Erweiterung (search and replace) gibt, die das glaub ich auch recht unkompliziert macht.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •