Linuchs: Lösung

Beitrag lesen

Hätte nicht gedacht, für so ein kleines Problem so eine Diskussion loszutreten.

Ist das Kopieren eines Datensatzes sowas Exotisches, was nur ich mache?

Die Lösung ist nun, dass ich die row_quelle einlese, im Speicher Felder auf NULL setze, die jungfräulich sein müssen (z.B. Zugriffszähler) alle Felder als neu schreibe ausgenommen die auf NULL gesetzten und die leeren. Damit bekommen die den Default-Wert aus der Datenbank.

$row_quelle['counter']        = NULL;
...
    $q = "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# form_basis: Kopie neu anlegen
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INSERT INTO ".$db[0]['termine']."
SET
";
    $q .= " owner_id = '".$owner_id."'\n";    // damit die Folgenden mit Komma beginnen koennen
    foreach( $row_quelle AS $key => $val ) {
      if ( !is_null( $val ) && strlen( $val ) > 0 ) {
        $q .= ",".$key." = '".addslashes( $val )."'\n";
      }
    }
    $q .= ";\n";

Danach wird mit der neuen id die vorhandene Änderungsroutine durchlaufen, die Werte aus form eingesetzt.

So kompliziert wie zuvor, aber unbekannte Felder werden mitkopiert.

Danke für das zahlreiche Mitdenken.