Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchen und Ersetzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Suchen und Ersetzen

    Hallo,
    ich möchte in der Datenbank den Eintrag " <p class=auto-style1>%</p>" in "<h1>%</h1>" ändern.
    Versucht habe ich es mit :

    UPDATE thema SET Beschreibung = REPLACE(Beschreibung, "<p class=auto-style1>%</p>", "<h1>%</h1>");

    Es wird aber nichts gefunden. Lasse ich %</p> weg, werden alle Einträge gefunden. Das kann ich aber jetzt nicht mit <h1> ersetzen, da mir das abschließende </h1> fehlen würde.
    Wie stelle ich das bitte an?





  • #2
    Zitat von Hardyy Beitrag anzeigen
    UPDATE thema SET Beschreibung = REPLACE(Beschreibung, "<p class=auto-style1>%</p>", "<h1>%</h1>");

    Es wird aber nichts gefunden.
    Das kann ich nicht nachvollziehen, bei mir funktioniert die Zeile genau so wie du sie gepostet hast (mit anderen Tabellen- und Spaltennamen halt). Wie sieht deine Tabelle aus? Poste mal Tabellendefinition und ein/zwei Zeilen Daten (als CREATE- bzw. INSERT-Querys).

    Kommentar


    • #3
      Was du machst ist eh nicht sinnvoll. Du speicherst nicht Inhalte sondern Inhalte mit Anweisungen für HTML.
      Wenn du mal etwas anderes als HTML ausgeben willst, musst du jedes mal die HTML-Tags entfernen. Warum speicherst du nicht die Rohdaten?

      Kommentar


      • #4
        Ich bekomme folgende Meldung:
        Fehler

        SQL-Befehl:
        UPDATE thema SET Beschreibung=REPLACE(Beschreibung, <p class=auto-style1>%</p>, <h1>%</h1>) MySQL meldet: Dokumentation #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '<p class=auto-style1>%</p>, <h1>%</h1>)' in Zeile 1
        Die Spalte "Beschreibung ist als longtext in utf8 "

        05- <b>Ansichten</b>
        <p class=auto-style1>Prager Brücken
        </p>
        <p>Über die Moldau führen im Bereich der Stadt Prag derzeit insgesamt <b>18 Brücken</b> einschließlich der Fußgängerbrücke nach Troja.
        </p>
        .....................
        So auf die Schnelle weiß ich nicht wie ich die Tabellendefinition kopieren könnte. Aber ich hoffe, mit diesen Angaben geht's auch.

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Was du machst ist eh nicht sinnvoll. Du speicherst nicht Inhalte sondern Inhalte mit Anweisungen für HTML.
          Wenn du mal etwas anderes als HTML ausgeben willst, musst du jedes mal die HTML-Tags entfernen. Warum speicherst du nicht die Rohdaten?
          So ist es für meinen Zweck am einfachsten. Ich wüßte nicht, wie ich die Rohdaten dann formatiert ausgeben würde.

          Kommentar


          • #6
            Zitat von Hardyy Beitrag anzeigen
            Ich bekomme folgende Meldung: […]
            Das sieht so aus als ob die Anführungszeichen um den zweiten und dritten Parameter von REPLACE fehlen würden - bist du sicher dass du wirklich mit dem Code aus #1 arbeitest?

            Zitat von Hardyy Beitrag anzeigen
            So auf die Schnelle weiß ich nicht wie ich die Tabellendefinition kopieren könnte.
            SHOW CREATE TABLE thema

            Kommentar


            • #7
              Zitat von Hardyy Beitrag anzeigen
              So ist es für meinen Zweck am einfachsten. .
              Ist es nicht.
              Sieht man ja welchen krampfhaften Versuch du nun unternimmst um die Ausgabe gerad zu biegen. Mit einem Template wäre das eine Sache von Sekunden.

              Ich wüßte nicht, wie ich die Rohdaten dann formatiert ausgeben würde
              Dann fange noch mal bei den Grundlagen von PHP und HTML an.

              Kommentar


              • #8
                Zitat von tk1234 Beitrag anzeigen
                Das sieht so aus als ob die Anführungszeichen um den zweiten und dritten Parameter von REPLACE fehlen würden - bist du sicher dass du wirklich mit dem Code aus #1 arbeitest?


                SHOW CREATE TABLE thema
                TableCreate TablethemaCREATE TABLE `thema` (
                `ID` smallint(6) NOT NULL AUTO_INCREMENT,
                `Name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
                `Beschreibung` longtext COLLATE utf8_unicode_ci NOT NULL, <------------
                `c_lon` float DEFAULT NULL,
                `c_lat` float DEFAULT NULL,
                `zoom` tinyint(2) DEFAULT NULL,
                `Datum` date NOT NULL,
                `umap` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
                `anonym` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL,
                PRIMARY KEY (`ID`)
                ) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

                Habe den code nochmals eingegeben und folgende Meldung bekommen:
                SQL-Querybox anzeigen 0 Datensätze betroffen. (Die Abfrage dauerte 0,0039 Sekunden.)
                UPDATE thema SET Beschreibung=REPLACE(Beschreibung, "<p class=auto-style1>%</p>","<h1>%</h1>")
                Hier sieht man die Anführungszeichen.

                Kommentar


                • #9
                  Zitat von Hardyy Beitrag anzeigen
                  Habe den code nochmals eingegeben und folgende Meldung bekommen:
                  Dann gibt es keinen Datensatz der "<p class=auto-style1>%</p>" enthält.

                  Kommentar


                  • #10
                    Die Datensätze gibt es. Der Suchbegriff mit dem Platzhalter findet nichts. Lasse ich den Platzhalter weg "<p class=auto-style>", werden alle Datensätze gefunden. Eben wie ich schon unter #1 beschrieben habe.
                    Habe auch probiert "%"<p class=auto-style>%</p>%" ohne Erfolg. Der Platzhalter stört, aber warum? Anscheinend werden die Platzhalter entweder am Anfang oder am Ende akzeptiert aber nicht in der Mitte.

                    Kommentar


                    • #11
                      Zitat von Hardyy Beitrag anzeigen
                      Die Datensätze gibt es. Der Suchbegriff mit dem Platzhalter findet nichts. Lasse ich den Platzhalter weg "<p class=auto-style>", werden alle Datensätze gefunden. Eben wie ich schon unter #1 beschrieben habe.
                      Sorry, da war ich auf dem Holzweg - ich hatte das % nicht als Platzhalter gesehen sondern genau den String vermutet … In dem Fall kommst du mit REPLACE nicht weit da das einfach nur Text ersetzt aber ohne Platzhalter o.ä.. Wenn du MySQL 8.x hast könntest du mit REGEXP_REPLACE arbeiten, wenn nicht könntest du es mal mit der Funktion in der Antwort bei Stackoverflow versuchen. Am sinnvollsten wäre aber wohl Daten getrennt vom HTML zu speichern (wie protestix schon in #3 schrieb) …

                      Kommentar


                      • #12
                        Zitat von tk1234 Beitrag anzeigen
                        Am sinnvollsten wäre aber wohl Daten getrennt vom HTML zu speichern
                        Dazu ist es leider zu spät, die Texte sind so bereits in großer Menge vorhanden. Bei der SEO-Prüfung wird gemeldet, daß keine Seitenüberschriften <h1> existieren. Wollte so meine Überschriften (auto-style1) in <h1> -Überschriften umschreiben.

                        Auf jeden Fall danke für die Hilfe.

                        Kommentar

                        Lädt...
                        X