php mysql: insert und update in einem file



  • Hi Leutz,

    folgende Fragestellung:

    zum updaten benutze ich folgenden Code:

    // Aktualisieren der Daten:
    	$query="UPDATE morgenbericht SET
    
    	datum='$datum',
    	bearbeiter='$bearbeiter'
    
             WHERE id='$id'";
    

    und folgendes zum includen:

    // Neuen Datensatz hinzufügen
             $query="INSERT INTO morgenbericht
    
    (	datum,
    	bearbeiter )
    
    	VALUES 
    
    (	'$datum',
    	'$bearbeiter'	)";
    

    Jetzt würde ich gerne eine Datei für beides verwenden und hatte gehofft, dass das include auch so gehen würde:

    // Neuen Datensatz hinzufügen
    	$query="INSERT INTO morgenbericht
    
    	datum='$datum',
    	bearbeiter='$bearbeiter'";
    

    Klappt aber nicht. Gibts da ne andere Möglichkeit um beides mit einer Datei zu machen???

    thx, MFG
    dope_dope



  • Also so ganz verstehe ich nicht, was du genau willst.

    Brauchst du vielleicht eine Art Befehl, der entweder den bestehenden Datensatz aktualisiert oder, wenn er nicht besteht einen neuen anlegt 😕



  • Ich bin faul und da ich nicht, falls sich mal was an den Tabellenfeldern ändert ein Formular für Update und ein Fommular für Insert = 2 Formulare ändern will, möchte ich 1 Formular für beides.
    Ich will also nur einmal:

    datum='$datum',
    bearbeiter='$bearbeiter'
    

    im Code.

    Ich dachte an sowas in der Art, nur mal als Bsp. ist teilweise falsch:

    if ($operation=="insert")
    {
       $request="INSERT into morgenbericht"
    }
    else if ($operation=="update")
    {
       $request="UPDATE morgenbericht SET"
    }
    
    querry="
              ' . $request . '
              datum='$datum',
              bearbeiter='$bearbeiter'
    ";
    

    Weißt du jetzzt, was ich meine?



  • Hi dope_dope!

    Folgende Funktion sollte den Zweck erfüllen:

    <?php
    $data = array('datum'=>$datum,'bearbeiter'=>$bearbeiter);
    
    $sql_query = sql_data_manipulation("morgenbericht", $data, 'update'); //bzw. 'insert'
    
    function sql_data_manipulation($table, $data, $mode = 'insert', $where = ''){
    	if ($mode == 'update'){
    		$query = "UPDATE $table SET ";
    		foreach($data as $key => $val){
    			$query.="$key = '$val',";
    		}
    		$query = substr($query,0,-1);
    		if ($where){
    			$query.=$where;
    		}
    	}else{
    		$query = "INSERT INTO $table";
    		$fields = "(";
    		$vals = "(";
    		foreach($data as $key => $val){
    			$fields.=$key.",";
    			$vals.="'".$val."',";
    		}
    		$fields = substr($fields,0,-1).")";
    		$vals = substr($vals,0,-1).")";
    		$query.=$fields." VALUES ".$vals;
    	}
    	return $query;
    }
    ?>
    

    Solltest du bei einem Update ein "WHERE" brauchen, um nicht die ganze Tabelle zu verändern, einfach die Funktion mit dem optionalen Parameter 4 ($where) aufrufen, zB

    $sql_query = sql_data_manipulation("morgenbericht", $data, 'update', "WHERE id='1'");
    

    Eventuelle Fehler bitte verzeihen, bin grad erst aufgestanden 😉



  • Sind keine Fehler drin, funktioniert prima!

    Vielen Dank, MFG
    dope_dope



  • Un wen nman einen UPDATE,INSERT braucht nimmt man einfach REPLACE


Anmelden zum Antworten