Thomas Z.: Teile eines Datensatzes updaten

Hallo liebe Selfhtml Gemeinde

Ich hab da mal folgende Frage :

Ich habe in einer Datenbank links zu Bildern drin, die eine Size angabe haben.

So sieht der Datensatz aus ...

<a href="beschreibung/single/Melanie C Never Be The Same Again (Single Edit).htm"><img border="0" src="images/single/Melanie C - Never Be The Same Again (Single Edit).jpg" width="45" height="45">

nun möchte ich in allen Datensaetzen die width="45" height="45" austauschen gegen width="80" height="80"

wie kann ich das bewerkstelligen ohne immer den Interpret und den Titel beim update Befehl auf den Weg zu geben.

Vielen Dank

Gruss Thomas

  1. echo $begrüßung;

    nun möchte ich in allen Datensaetzen die width="45" height="45" austauschen gegen width="80" height="80"

    wie kann ich das bewerkstelligen ohne immer den Interpret und den Titel beim update Befehl auf den Weg zu geben.

    Was genau verstehst du an der UPDATE-Syntax nicht? Dass man bei SET nur die Spalten angeben muss, die man ändern möchte, oder dass man in der WHERE-Klausel auch nur die height- und width-Spalte angeben kann?

    echo "$verabschiedung $name";

    1. Hallo Deddlfix

      Was ich nicht verstehe ??

      Also mit select * from Database where foto LIKE 'width=45 height=45'
      bekomme ich alle Datensaetze angezeigt. LIKE machst möglich.

      Nur kann ich jetzt nicht mit
      UPDATE Database set foto='width=80 height=80' where foto LIKE '%width=45 height=45%' nur den Teil austauschen width=45 height=45. Der obige Befehl würde schliesslcih bezwecken das in allen foto dann drin stehen würde width=80 height=80.

      Deshalb benötige ich die korrekte Syntax.

      Gruss Thomas

      1. Hi,

        du hast VOLLTEXT in deinen Feldern drinstehen? Das ist gelinde gesagt _sehr_ ungeschickt. Nichts destro trotz kannst du das ganze mit den String-Funktionen der Datenbank vermutlich ausgleichen:
        MySQL-Handbuch
        REPLACE(str,from_str,to_str) zusammen mit einem UPDATE müsste helfen...

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. Hallo Rouven

          Danke für den Tip... hab da mal was probiert...

          UPDATE top100 Set foto = replace('width=42','42','80')

          Scheibenkleister, genau das wollte ich nicht, jetzt kann ich erstmal ein Backup hervor kramen.... jetzt steht ueberall nur noch width=80 drin.....

          Wärst du so nett und könntest mir die Syntax posten.. bevor ich mir die Datenbänke weiter zerschiessse......

          1. Hallo nochmal,

            UPDATE top100 Set foto = replace('width=42','42','80')

            Lass mich rekapitulieren, was du mit diesem Statement erreichst:
            Du gehst alle Sätze durch (keine WHERE-Klausel) und schreibst in die Foto-Spalte rein:
            "egal was da vorher drin stand, nimm den String width=42 und ersetze darin 42 durch 80" - Foto wird also also immer auf width=80 gesetzt, wie du gesehen hast.
            Was du ja eigentlich wolltest ist (1) nur die Sätze, die den Schlüsselstring enthalten und (2) im _alten Fotowert_ den Text ersetzen:
            UPDATE top100
            SET foto = REPLACE(foto, ..., ...)
            WHERE INSTR(foto, 'width=42') > 0

            MfG
            Rouven

            --
            -------------------
            ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
          2. Hallo Thomas,

            Wärst du so nett und könntest mir die Syntax posten.. bevor ich mir die Datenbänke weiter zerschiessse......

            was an REPLACE() war Dir unklar?

            Scheibenkleister, genau das wollte ich nicht, jetzt kann ich erstmal ein Backup hervor kramen.... jetzt steht ueberall nur noch width=80 drin.....

            Bevor man die Originaldaten mit einer frisch erlernten Funktion überarbeitet, sollte man einen Testlauf mit Testdaten machen. Könnte das ab heute Deine Vorgehensweise sein? So etwas erspart unnötiges Einspielen von Backups.

            Freundliche Grüße

            Vinzenz