Komplexer REPLACE Befehl

  • Hallo,

    durch das Entfernen alter Bilder habe ich das kleine Problem, dass ich viele Beiträge habe, wo noch der Pfad zu dem nicht vorhandenen Bild vorhanden ist.

    Da würde ich gerne ein Standardbild drüber legen.

    Da der Pfad bei den gelöschten Bildern immer gleich beginnt, dachte ich das müsste mit SQL REPLACE möglich sein.


    In der "xx_content" sind die Bildpfade in der Zeile "images" gespeichert.


    das sieht dann z.B. so aus:

    Code
    {"image_intro":"media\/reviews\/photos\/thumbnail\/200x200c\/c2\/de\/87\/phoca-thumb-l-Zirbitzkogel-2013-07-07-40-1479381107.jpg","float_intro":"left","image_intro_alt":"Zirbitzlauf","image_intro_caption":"Foto \u00a9 Veranstalter","image_fulltext":"\/media\/reviews\/photos\/original\/c2\/de\/87\/phoca-thumb-l-Zirbitzkogel-2013-07-07-40-1479381107.jpg","float_fulltext":"none","image_fulltext_alt":"Zirbitzlauf","image_fulltext_caption":"Foto \u00a9 Veranstalter"}

    Nun möchte ich alle Bilder (Intro-Bilder, Fulltext-Bilder und idealerweise auch Contentbilder - also die sich in introtext und fulltext befinden), die "phoca" enthalten, durch ein Standardbild (der Pfad ist in dem Fall immer gleich) ersetzen. Lässt sich das auch mit einer SQL Anweisung lösen?

    LG

  • Hast du ein Programm (wie phpMyAdmin) um dir die Tabellen anzuzeigen? Dann such in der "xx_content" nach diesem String. dann siehst du erstmal, ob alles korrekt ist. Dann kannst du doch in dem "SQL"-Feld den SELECT REPLACE Befehl machen. Falls du kein GUI hast, kannst du es über Konsole. Wenn du die nicht hast muss du kurz beschreiben, wie du die Tabellen bearbeiten kannst.

  • Ich kenne den REPLACE-Befehl ;)

    Aber so einfach ist das in dem Fall nicht, da hunderte toten Phocagallery-Bild-Links natürlich unterschiedliche Dateinamen haben bzw. in unterschiedlichen Unter-Verzeichnissen liegen.

    Gibt es eine Möglichkeit Platzhalter in den SQL-Befehlen einzubauen?





    zB. ersetze alles

    was mit

    Code
    {"image_intro":"images\/phocagallery\/

    beginnt

    und mit

    Code
    ","float_intro"

    endet in:

    Code
    {"image_intro":"images\/standardbild.jpg","float_intro"


    Damit sollte dann aus

    Code
    {"image_intro":"images\/phocagallery\/thumbs\/phoca_thumb_m_vienna-city-marathon-2015-hds_1542.jpg","float_intro":"left","image_intro_alt":"","image_intro_caption":"","image_fulltext":"images\/phocagallery\/thumbs\/phoca_thumb_l_vienna-city-marathon-2015-hds_1542.jpg","float_fulltext":"none","image_fulltext_alt":"","image_fulltext_caption":""}

    folgendes werden:

    Code
    {"image_intro":"images\/standardbild.jpg","float_intro":"left","image_intro_alt":"","image_intro_caption":"","image_fulltext":"images\/phocagallery\/thumbs\/phoca_thumb_l_vienna-city-marathon-2015-hds_1542.jpg","float_fulltext":"none","image_fulltext_alt":"","image_fulltext_caption":""}

    und das natürlich auch bei allen anderen Intro-Bildern, die mit "images/phocagallery" beginnen

  • Ich kenne den REPLACE-Befehl ;)

    Sorry. pardon


    Vielleicht hilft dir das hier weiter:

    Regex pattern inside SQL Replace function?
    SELECT REPLACE('<strong>100</strong><b>.00 GB', '%^(^-?\d*\.{0,1}\d+$)%', ''); I want to replace any markup between two parts of the number…
    stackoverflow.com

    Stichwort reguläre Ausdrücke. Für Oracle-DB´s gibt es wohl den Befehl REGEXP_REPLACE, aber gibt´s das auch für SQL? Hab ich so nicht gefunden... search

  • Dzu würde ich ein PHP skript verwenden. Da hast du mehr möglichkeiten als mit reinem SQL.

    JoomGallery::friends ist aktuell noch auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Gesucht sind Leute für die PHP-Entwicklung, zum Testen, Übersetzen und Dokumentieren.

    Bei Interesse melde dich per PM oder Mail bei mir (Elfangor93).

  • Mach doch einfach ein einfaches htaccess rewrite auf den Ordner "phoca", wenn die Datei nicht existiert.

    Hallo,


    ich denke, so einfach wird es nicht sein, da dieses Problem nicht primär mit Phoca Gallery zu tun zu haben scheint.

    Diese Bilder werden wahrscheinlich für Artikel ausgewählt und jemand hat sie wahrscheinlich auch aus Phoca Gallery Thumbnails Ordner ausgewählt. Ich vermute, dass es nicht die Regel war. Diese Bilder waren vielleicht auch aus anderen Verzeichnissen gewählt, also wird die Rewrtie Regel für einen einzelnen konkreten Fall vielleicht unzureichend. :idea:


    Phoca Gallery selbst hat eine Funktion zum Reinigen des Systems. Es findet automatisch unbenutzte Bilder und Thumbnails und löscht sie. Dies gilt jedoch für die Komponente selbst, nicht wenn jemand ein Bild aus dem Phoca Gallery Ordner woanders verwendet. Das hat eigentlich nichts mit Phoca Gallery zu tun, nur dass das Bild aus diesem Ordner ausgewählt wurde.

    Ich denke, dies:


    - Daten aus der Datenbank hochladen

    - Ein PHP-Skript verwenden, um einen einfachen "Replace" vorzunehmen (je nach Anforderungen)

    - und wieder in die Datenbank speichern


    wird der einfachste Weg. :idea:

  • Doch, eigentlich geht es nur um Phoca.

    Ich hatte den Ordner vor der Migration von J3 auf J4 gelöscht, da ich die Phocagallery seit Jahren schon entfernt hatte, aber die Bilder noch nicht. Das Aufräumen war in dem Fall etwas kontraproduktiv, da die Bilder ja noch Teil von alten Artikeln waren...


    Bei PHP-Skripten bin ich aber leider völlig überfordert.

    Wenn die Thematik allerdings zu komplex ist, muss ich es manuell lösen.