Page 1 of 1

Suchen und Ersetzen in MySql

Posted: Sun Feb 08, 2009 11:47 am
by jeff1980
Hallo,

ich hätte da mal wieder eine Frage  :).

Ich betreue ja das Projekt www.festtagsgedichte.de mit mittlerweile über 1500 Texten sprich Unterseiten. In letzter Zeit hat sich bei der Dateneingabe leider ein kleiner Fehler eingeschlichen.
Normalerweise sollte der Content im Quelltext so aussehen:

Code: Select all

<p>Adele<br />
Mein Adelchen mein<br />
Es ist so schön<br />
Dass du bist wie du bist<br />
Und nicht nur zum Geburtstag<br />
Lieben wir dich</p>
{global_content name='webseite'}
Durch die Fehlerhafte Eingabe ist nun aber folgendes passiert:

Code: Select all

<p>Adele<br />
Mein Adelchen mein<br />
Es ist so schön<br />
Dass du bist wie du bist<br />
Und nicht nur zum Geburtstag<br />
Lieben wir dich<br />
{global_content name='webseite'}</p>
<p> </p>
Leider bei einer nicht mehr nachvolziebaren Anzahl von Texten...
Nun würde ich natürlich ungern in jeden Text gehen und es manuell ändern. Ich habe deshalb folgendes Skript für MySQL ausfindig gemacht:

Code: Select all

UPDATE tabellenname SET feldname =
replace(feldname, suchstring, ersatzstring);
Da es mir nur um den Abschnitt ab dem letzten
geht, würde das wohl für mich so aussehen:

Code: Select all

UPDATE cmsms_content_props SET content =
replace(content, '<br />{global_content name='webseite'}</p><p> </p>', '</p>{global_content name='webseite'}');
Das Problem ist nicht nur optischer Natur, sondern auch technischer. Da ich im GCB schon mit arbeite, kommt es teilweise zu unschönen Ergebnissen im Quellcode...

Da ich nicht wirklich die Möglichkeit habe, es zu testen (lokaler Import der Datenbank klappt zwar, aber CMSms läuft unter XAMPP damit nicht - wurde hier vor längerer Zeit schon mal diskutiert), würde ich gern wissen, was Ihr von dem Schnippsel haltet und ob es wohl so funktioniert...

Bin wie immer für jeden Tipp dankbar...

Viele Grüße
Jan

Re: Suchen und Ersetzen in MySql

Posted: Sun Feb 08, 2009 1:10 pm
by tobik
Du musst mit dem Hochkomma aufpassen, z.B. bei name='website'. Das Hochkomme ist bei SQL der Begrenzer für einen String.

Re: Suchen und Ersetzen in MySql

Posted: Sun Feb 08, 2009 2:18 pm
by jeff1980
Hi tobik,

danke für den Hinweis. Der GCB müsste ja auch mit " funktionieren. Meinst Du das klappt dann so in MySQL?

Code: Select all

UPDATE cmsms_content_props SET content =
replace(content, '<br />{global_content name="webseite"}</p><p> </p>', '</p>{global_content name="webseite"}');
Ach ne - Mist!!! In dem Teil, der ersetzt werden soll, stehen ja '. Das kann ich ja nicht ändern. Kann ich ' denn irgendwie nutzen in MySQL? Habe grad mal kurz gegoogelt. Angeblich solls wie bei PHP gehen: \'

Also vielleicht so?

Code: Select all

UPDATE cmsms_content_props SET content =
replace(content, '<br />{global_content name=\'webseite\'}</p><p> </p>', '</p>{global_content name=\'webseite\'}');

Viele Grüße
Jan

Re: Suchen und Ersetzen in MySql

Posted: Sun Feb 08, 2009 2:59 pm
by tobik
Ich denke, das sollte so funken. Ein Backup kann trotzdem nicht schaden. ;)

Re: Suchen und Ersetzen in MySql

Posted: Sun Feb 08, 2009 4:30 pm
by jeff1980
Hi nochmal,

hab mich dann mal gewagt... Ganz so simpel war es dann doch leider nicht. MySQL wollte noch besondere Anführungszeichen:

Code: Select all

UPDATE `cmsms_content_props` SET `content` = REPLACE(`content`,"<p>{global_content name='webseite'}</p>", "{global_content name='webseite'}")
So hat es dann letztendlich geklappt. Ein komplette Austausch ging leider nicht, aber Stück für Stück ist auch ok. Besser als jeden Text zu überprüfen...

Auf jeden Fall danke für Deine Hilfe.

Viele Grüße
Jan