Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
05.07.2010, 01:41
kingduevel



Hallo Leute,

ich bin leider kein Meister, wenn es um Datenbanken geht und da ich in meinem Forum mit 23.000 Beiträgen keinen Fehler machen möchte wende ich mich an euch und bitte um Hilfe.

Es geht darum, dass ich in meinem Woltlab Burning Board 3.1 die vom vorherigen uralt-Forum mit "Re: Thementitel" importieren Beitragstitel endlich mal entfernen möchte. Das will ich natürlich nicht von Hand machen, also muss eine SQL-Anweisung her. Ich formuliere diese mal sprachlich...

Quellcode:Wähle aus der Tabelle "wbb1_1_post" alle Einträge, dessen Feld "subject" exakt mit "Re: " beginnt und leere dieses dann. Egal was ich mache - ja, ich mache vorher ein Backup :) .
Wäre für konkreten Code oder Anmerkungen sehr dankbar.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
05.07.2010, 01:54
Bluthund



Quellcode:UPDATE wbb1_1_post SET subject = "" WHERE subject LIKE "Re: %"

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
002
05.07.2010, 02:15
caedes



mit ""? nicht eher ''
also
Quellcode:UPDATE wbb1_1_post SET subject = '' WHERE subject LIKE 'Re: %' kA was da für ne DB genutzt wird und was z.b. mysql da für ne syntax unterstützt, aber z.b. postgresql mag nur '.

--

caedes

Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen.

zum Seitenanfang zum Seitenende Profil || Suche
003
05.07.2010, 08:24
CPoly



Wieso möchtest du den Titel denn leeren? Ist es nicht sinnvoller nur das "Re: " zu entfernen?

Quellcode:UPDATE wbb1_1_post SET subject=REPLACE(subject, 'Re: ', '') WHERE subject LIKE 'Re: %'

--

zum Seitenanfang zum Seitenende Profil || Suche
004
05.07.2010, 13:07
Bluthund



Stimmt, es muessen single quotes sein. Sybase laesst beides zu. Aber nicht einmal MySQL streckt da den Standard :)

@CPoly: Ich denk mal die Betreffs sind redundant, da sie einfach nur den Thementitel mit dem Praefix "Re: " versehen.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
005
05.07.2010, 13:19
kingduevel



Erstmal vielen Dank für die schnellen unkomplizierten Antworten.

Ja, aus den Beitragstiteln soll das "Re: " nicht einzeln gelöscht werden, sondern diese dann komplett leer sein. Also ich denke caedes Ansatz ist der bisher korrekte für mich.

Hinweis: Es handelt sich um eine MySQL-Datenbank in Version 5.0, administriert mittels phpMyAdmin 3.2.0.1. Auf der Seite, wo ich den SQL-Code eingeben kann, schlägt er mir auch ein Select-Beispiel vor, wo Single-Quotes verwendet werden.

Okay, ich glaub dann probier ich das mal aus...

Edit: Juhu, hat geklappt! Tausend Dank an euch drei!

--


Dieser Beitrag wurde am 05.07.2010 um 13:27 von kingduevel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
05.07.2010, 13:50
kingduevel



Aber wenn ihr euch schon warm gecodet habt, dann frag ich nochmal was... hoffe es macht euch nichts aus. Ich habe leider noch andere Dinge des (in dieser Hinsicht leider nicht optimal abgelaufenen) Imports vom alten ins neue Forum zu bereinigen. Zum einen wäre da die HTML-Formatierung in BB-Code zu ändern.
Quellcode:Verändere in der Tabelle "wbb1_1_post" und dort im Feld "message" alle "<b>" in "[b]" und lasse den Rest der Nachricht unangetastet. .

Ich denke, das ist noch relativ einfach. Komplizierter wird es bei den internen Links, wo aus dem hier
Quellcode:<a target="_blank" href="http://forum.justasite.de/thread.php?threadid=1">http://forum.justasite.de/thread.php?threadid=1</a> eigentlich nur das hier
Quellcode:http://www.justasite.de/index.php?page=Thread&threadID=1 gemacht werden müsste.

Geht das eigentlich noch als reine SQL-Anweisung oder müsste ich da sowieso PHP einsetzen?

--

zum Seitenanfang zum Seitenende Profil || Suche
007
05.07.2010, 14:08
Adrian_Broher
Admin


Zitat:
kingduevel postete
Aber wenn ihr euch schon warm gecodet habt, dann frag ich nochmal was... hoffe es macht euch nichts aus. Ich habe leider noch andere Dinge des (in dieser Hinsicht leider nicht optimal abgelaufenen) Imports vom alten ins neue Forum zu bereinigen. Zum einen wäre da die HTML-Formatierung in BB-Code zu ändern.
Quellcode:Verändere in der Tabelle "wbb1_1_post" und dort im Feld "message" alle "<b>" in "[b]" und lasse den Rest der Nachricht unangetastet. .
Dafuer ist CPoly's Snipplet ohne die WHERE clause geeignet.

Zitat:
kingduevel postete
Ich denke, das ist noch relativ einfach. Komplizierter wird es bei den internen Links, wo aus dem hier
Quellcode:<a target="_blank" href="http://forum.justasite.de/thread.php?threadid=1">http://forum.justasite.de/thread.php?threadid=1</a> eigentlich nur das hier
Quellcode:http://www.justasite.de/index.php?page=Thread&threadID=1 gemacht werden müsste.

Geht das eigentlich noch als reine SQL-Anweisung oder müsste ich da sowieso PHP einsetzen?

Lass es besser bleiben und nutze die Macht von mod_rewrite mit einem 301 Redirect. Deine externen Verlinker und dein Pagerank werden es dir danken.

Fuer das "reparieren" der internen Links ist reines MySQL nicht wirklich geeignet, da man keine Regexp Ersetzungen durchfuehren kann.

Edit: HTTP Statuscode korrigiert.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.


Dieser Beitrag wurde am 05.07.2010 um 15:19 von Adrian_Broher bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
05.07.2010, 14:21
kingduevel



Quellcode:UPDATE wbb1_1_post SET subject=REPLACE(message, '<b>', '[b]') Also würde das so funktionieren? Cool, hab ich mir eigentlich auch gedacht, dass das nicht allzu schwierig sein kann :) .

Zu den internen Links... hmm... selbst wenn ich einen Redirect einbaue, so hab ich immernoch das Problem der mit HTML eingebundenen Links. Das soll ja eigentlich auch behoben werden. Also irgendwelche Platzhalter gehen da gar nicht? Ich mach mal ein doofes Beispiel (wobei ich davon ausgehe, dass % ein Platzhalter für jedwedes Zeichen oder Zeichenketten ist):
Quellcode:UPDATE wbb1_1_post SET subject=REPLACE(message, '<a target="_blank" href="%">', '') Zwar hieße das, dass ich mir das immernoch zusammenwurschteln müsste, aber wenn es so vom Prinzip her ginge, dann würde mir das auf jeden Fall weiterhelfen...

--

zum Seitenanfang zum Seitenende Profil || Suche
009
05.07.2010, 14:36
Bluthund



% und _ sind nur Platzhalter in Verbindung mit dem LIKE-Operator. REPLACE ersetzt einfach alle Vorkommnisse des zweiten Parameters im ersten Parameter durch den dritten Parameter (vgl. MySQL Referenz).
Desweiteren wuerdest du mit so einer Ersetzung (wenn sie denn so funktionieren wuerde wie du es dir gedacht hast) saemtliche Links killen, in die deine User mehr Arbeit gesteckt haben als einfach nur eine URL zu posten.
Beispiel:
Quellcode:<a target="_blank" href="http://www.google.de">Das G</a> Wie Adrian schon sagte: Ohne die Moeglichkeit Ersetzungen mittels regulaerer Ausdruecke zu taetigen willst du sowas nicht machen.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
010
05.07.2010, 16:28
Adrian_Broher
Admin


Zitat:
kingduevel postete
Quellcode:UPDATE wbb1_1_post SET subject=REPLACE(message, '<b>', '[b]')
vs

Quellcode:UPDATE wbb1_1_post SET message=REPLACE(message, '<b>', '[b]');
UPDATE wbb1_1_post SET message=REPLACE(message, '</b>', '[/b]');
Lass ein bisschen Vorsicht walten.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche
011
05.07.2010, 17:31
kingduevel



Oh, vielen Dank für die Korrektur, Adrian_Broher. Hätte das "subject" doch fast übersehen. Aber dass ich natürlich nicht nur einfach das "<b>" ersetze, das ist mir klar. Sollten natürlich alle "<b>", "<i>", "<u>" und so weiter inklusive schließender Tags sein.

Edit: Juhu, auch das hat geklappt! Danke!

Und das andere Problem mit den Links weiß ich halt selbst noch nicht. Aber du hast schon Recht, Bluthund. Ich denke eher, dass ich das dann doch über Mod Rewrite versuche und/oder immer beim Drüberstoßen die Links manuell verändere...

--


Dieser Beitrag wurde am 05.07.2010 um 17:54 von kingduevel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche