Mehrere Spalten einer Tabelle prüfen und zusammenfügen?!

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
siebenschlaefer
Mitglied
Beiträge: 221
Registriert: 22.01.2003 19:36
Wohnort: md

Mehrere Spalten einer Tabelle prüfen und zusammenfügen?!

Beitrag von siebenschlaefer »

Ich habe mit hilfe eines Mods in der Tabelle phpbb_topics neben den normalen spalten nicht nur die spalte topic_title, sondern auch noch topic_extra, topic_extra1, topic_extra2 und topic_extra3. Nun möchte ich vor einer Konvertierung zu phpbb3 erreichen, dass in allen topics, welche einen eintrag in der spalte topic_extra haben eben dieser eintrag vor den entsprechenden topictitel gesetzt oder verschoben wird. Wie ist so etwas realisierbar?

Ähnliches soll mit topic_extra1, topic_extra2 und topic_extra3 passieren, sobald in diese felder etwas eingetragen ist, steht automatisch in der spalte topic_title der eintrag "ohne Titel" ....sobald ein Topic also diesen eintrag in der Spalte topic_title hat, sollen die Einträge aus topic_extra1, topic_extra2 und topic_extra3 in die Spalte topic_title verschoben oder kopiert werden.

Idealer Weise sollte zwischen allen Einträgen immer noch ein " - " eingefügt werden, als "Leerzeichen Bindestrich Leerzeichen".

Wäre fantastisch wenn mir jemand helfen könnte oder zumindest einen Tip hätte. :)
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Versuch mal das (ungetestet, Backup nicht vergessen oder erst mal in einer Testtabelle probieren):

Code: Alles auswählen

"UPDATE table SET topic_title = CONCAT(topic_extra, topic_title)"
Das sollte den Inhalt von topic_extra gefolgt vom Inhalt von topic_title nach topic_title kopieren.
siebenschlaefer
Mitglied
Beiträge: 221
Registriert: 22.01.2003 19:36
Wohnort: md

Beitrag von siebenschlaefer »

nach erstem kurzem problem, hats jetzt funktioniert - DANKE :)

...nur wie schaffe ich es, dass zwischen topic_extra und topic_title ein leerzeichen-bindestrich-leerzeichen eingefügt wird...also quasi so:

topic_extra - topic_title


und wie mach ich das ganze für die variante wenn im topic_title "ohne Titel" dann dort topic_extra1 - topic_extra2 - topic_extra3 einzufügen?
siebenschlaefer
Mitglied
Beiträge: 221
Registriert: 22.01.2003 19:36
Wohnort: md

Beitrag von siebenschlaefer »

okay, problem selbst gelöst :)

Code: Alles auswählen

UPDATE phpbb_topics SET topic_title = CONCAT(topic_extra, " - ", topic_title)
bleibt die frage bzgl topic_extra1, 2 und 3
siebenschlaefer
Mitglied
Beiträge: 221
Registriert: 22.01.2003 19:36
Wohnort: md

Beitrag von siebenschlaefer »

kleineres Problem >> ich müsste das einfügen darauf begrenzen, dass das ganze nur dann ausgeführt wird, wenn etwas in der spalte topic_extra steht ...sonst hab ich vor allen topic titeln " - " :-?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Ich habe es schon geahnt.

Code: Alles auswählen

"UPDATE phpbb_topics SET topic_title = CONCAT(topic_extra, " - ", topic_title) WHERE topic_extra <> ''"
oder so ähnlich. Vorausgesetzt das Gegenteil von "wenn etwas in der spalte topic_extra steht" ist eine leerer String ('').
siebenschlaefer hat geschrieben:bleibt die frage bzgl topic_extra1, 2 und 3
Dann formuliere sie mal, ich sehe nicht was Du wissen willst.
siebenschlaefer
Mitglied
Beiträge: 221
Registriert: 22.01.2003 19:36
Wohnort: md

Beitrag von siebenschlaefer »

danke, hat super funktioniert... den rest konnte ich mir mittlerweile selbst zusammenbasteln ;)

Code: Alles auswählen

UPDATE phpbb_topics SET topic_title = REPLACE(topic_title,'ohne Titel', CONCAT(topic_extra1, " - ", topic_extra2, " - ", topic_extra3))
Grund dieser ganzen Teilung war, dass in bestimmten foren der topic titel bei der eingabe aus drei feldern bestehen sollte (extra1, extra2, extra3), so dass der user gezwungen ist 3 bestimmte angaben als topic titel zu machen. Eben so einen mod benötige ich jetzt für phpbb3, natürlich lieber mit der option, dass nach der eingabe in die drei felder dann doch alles im topic_title mit trennung von " - " gespeichert wird. Sowas kannst du nicht zufällig basteln? soll auch nicht umsonst sein ;)
Antworten

Zurück zu „Coding & Technik“