Fragezeichen: Mehrere Datensätze auf einmal ändern

Hallo Forum

Ich habe folgendes Problem:

Habe ein Formular gemacht das tabellarisch aufgebaut ist und den Inhalt aus einer mySQL Tabelle holt. Man kann darin gewisse Daten ändern. Ich möchte nun diese Änderungen auf EINMAL wieder in die DB speichern, d.h. der Datensatz 1 soll den z.b. den Wert X aus dem Formular bekommen und der Datensatz 2 den Wert Q, etc.

Wie kriege ich das hin?

Für Euer Feedback, bereits im Voraus besten Dank.

Fragezeichen

  1. Am einfachsten ist es mit action=$PHP_SELF
    'conect'
    UPDATE tabelle SET name = '$name1', ... WHERE id=$id1
    result
    UPDATE tabelle SET name = '$name2', ... WHERE id=$id2
    result
    ..........

  2. Hello,

    Habe ein Formular gemacht das tabellarisch aufgebaut ist und den Inhalt aus einer mySQL Tabelle holt. Man kann darin gewisse Daten ändern. Ich möchte nun diese Änderungen auf EINMAL wieder in die DB speichern, d.h. der Datensatz 1 soll den z.b. den Wert X aus dem Formular bekommen und der Datensatz 2 den Wert Q, etc.

    Wie kriege ich das hin?

    Dafür gibt es das REPLACE-Kommando.

    Replace into ADRESSE (ID_ADRESSE, VORNAME, NACHNAME )
     values(16,'Paul','Pille'),(12,'Rosalie','Rotkäppchen');

    Leider sind die Beschreibungen, die ich dazu fand, sehr dürftig.
    Was ich bisher aber verifiziert habe ist:

    REPLACE arbeitet prinzipiell wie INSERT.
    Wenn nun aber ein Wert in der ID_ADRESSE ( PRIMARY UNIQUE KEY) bereits vorhanden ist, wird der vorhandene Datensatz gegen den neuen ausgetauscht.

    Nun wäre noch auszuprobieren, wie sich das System verhält, wenn es noch eine weitere UNIQUE KEY Spalte gibt, und man versucht, in diesem Feld eine Doublette einzufügen und die entsprechende ID _nicht_ in der Tabelle vorhanden ist.

    Wird dann dieser Datensatz auch ausgetauscht? Das wäre bestimmt nicht erwünscht, wenn eine falsche ID angesprochen wird...

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      REPLACE arbeitet prinzipiell wie INSERT.
      Wenn nun aber ein Wert in der ID_ADRESSE ( PRIMARY UNIQUE KEY) bereits vorhanden ist, wird der vorhandene Datensatz gegen den neuen ausgetauscht.

      Nun wäre noch auszuprobieren, wie sich das System verhält, wenn es noch eine weitere UNIQUE KEY Spalte gibt, und man versucht, in diesem Feld eine Doublette einzufügen und die entsprechende ID _nicht_ in der Tabelle vorhanden ist.

      Wird dann dieser Datensatz auch ausgetauscht? Das wäre bestimmt nicht erwünscht, wenn eine falsche ID angesprochen wird...

      Ergebnis:
      Es besteht ein Datensatz mit den Werten

      ID_ADRESSE(PK)    VORNAME   NACHNAME     NUMI(UK)
       16               Paul      Pille        33
       12               Rosalie   Rotkäppchen

      Replace into ADRESSE (ID_ADRESSE, VORNAME, NACHNAME, NUMI )
      values(97,'Paul','Panther',33),(12,'Rosalie','Rotkäppchen',52);

      ID_ADRESSE(PK)    VORNAME   NACHNAME     NUMI(UK)
       12               Rosalie   Rotkäppchen  52
       97               Paul      Panther      33

      (PK) = Primary Key
      (UK) = Unique Key

      Man sieht also, dass der Satz mit der ID 16 mit dem Satz mit der ID 97 überschrieben wurde, da in der Spalte NUMI berteits ein Wert 33 vorhanden war.

      REPLACE ist also auf jeden Fall mit Vorsicht zu genießen, wenn man nicht eine Bindung über die IDs herstellen kann. Wie sdhon erwähnt, fand ich bisher keine vernünftigen Beschreibungen dazu.

      Wenn die Tabelle nur eine einzige UK-Spalte hat, nämlich den Primary Key, funktioniert es aber bestens.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hallo Tom

        Danke für deine wirklich ausführliche Antwort. Wie kriege ich aber nun die neuen Werte in die REPLCAE-Abfrage rein, ohne da irgendwie was von Hand machen zu müssten?

        Fragezeichen

        1. Hello,

          Hallo Tom

          Danke für deine wirklich ausführliche Antwort. Wie kriege ich aber nun die neuen Werte in die REPLCAE-Abfrage rein, ohne da irgendwie was von Hand machen zu müssten?

          Da würde ich sowieso nur mit Sessions arbeiten. Dann kann man sich Finktionen für ein "Select * " schreiben, die dei angeforderten DS in der Session speichert und auch wieder vollständig (mit den Änderungen) zurückschreibt.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
      2. ich habe mir das Buch MySql4 von Markt & Technik besorgt.

        Darin ist beschrieben das bei Replace anweisungen alle Zeilen
        mit übereinstimmenden Indizes gelöscht werden ehe die neue
        Zeile eingefügt wird.
        Es kann also sein das aufeinmal mehrere Zeilen fehlen.

        REPLACE ist also mit vorsicht zu geniesen.

        Lieber etwas mehr schreiben und einige Schleifen.
        Dafür sind zum Schluss noch alle Datensätze, mit
        dem zu erwünschten Inhalt da.

        coste

        1. Hello,

          ich habe mir das Buch MySql4 von Markt & Technik besorgt.

          Ich habe hier den Kofler und http://dev.mysql.com/doc/mysql/de/index.html und http://www.little-idiot.de/mysql/

          Meistens reichen diese Quellen, aber manchmal fehlen mir einfach genügent praktische Beispiele.

          Darin ist beschrieben das bei Replace anweisungen alle Zeilen
          mit übereinstimmenden Indizes gelöscht werden ehe die neue
          Zeile eingefügt wird.
          Es kann also sein das aufeinmal mehrere Zeilen fehlen.

          Das passiert aber nur, wenn man mehrere Unique Index hat. Bei duplicate ist das nicht gefährlich.

          REPLACE ist also mit Vorsicht zu geniesen.  (stimmt trotzdem!)

          Lieber etwas mehr schreiben und einige Schleifen.
          Dafür sind zum Schluss noch alle Datensätze, mit
          dem zu erwünschten Inhalt da.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau