0251 / 590 837 15
info@a-coding-project.de
;

Speicherung Daten DBManager Teil 2 (CMS)

Code & Blog Logo

Code & Blog Logo

Vor ein paar Tagen haben wir begonnen die Daten des DB-Managers von unserem CMS zu speichern. Heute kommt davon das richtige Schreiben in der DB und natürlich das erstellen des Update-Querys.

Fangen wir mal mit der Datei /system/classes/mysql.php an. Diese bekommt heute die neue Funktion update. Ihr werden die alten Daten, die neuen Daten und der Tabellenname übergeben. Sie erledigt das Speichern und liefert „Update erfolgreich“, oder eine Fehlermeldung zurück:

function update($newValues, $oldValues, $table){
      $query = "UPDATE ".mysql_real_escape_string($table)." SET ";
      foreach($newValues as $key=>$value){
        $query .= mysql_real_escape_string($key)." = '".mysql_real_escape_string($value)."', ";
      }
      $query = substr($query,0,strlen($query)-2);
      $query .= " WHERE ";
      foreach($oldValues as $key=>$value){
        $query .= mysql_real_escape_string($key)." = '".mysql_real_escape_string($value)."' AND ";
      }
      $query = substr($query,0,strlen($query)-5);
      if(mysql_query($query)){
        return "Update erfolgreich!";
      }
      else{
        return "Update fehlgeschlagen: ".mysql_error();
      }
    }

Nun zum Aufruf der Funktion. Dafür haben wir uns in der Datei /admin/includes/tableitem-edit.php bereits einen Marken gesetzt, dass später dort geupdated werden soll. Diesen Marker müsst ihr nun einfach durch folgendes ersetzen:

echo MySQL::update($data,$olddata,$_GET['table']);

Das wars auch schon, der Datensatz wird nun gespeichert.

An dieser Stelle möchte ich nochmal den Bereich des Eigenen CMS im neuen Forum für alle die den Beitrag darüber noch nicht gelesen haben erwähnen. Hier haben 2 Leser 3 Erweiterungen fürs CMS geschrieben, die ihr euch nicht entgehen lassen solltet! Dort könnt ihr übrigens auch Bugs oder Erweiterungswünsche melden.

Hier geht’s zum CMS-Bereich des Forums.

Kommentare

Soundicate schrieb am 05.01.2010:

Hallo Setefan, öhm, könntest du mir vllt die ganze tableitem-edit.php zukommen lassen, ich hab die irgendwie vermurkst und bekomm's nicht hin:( Danke, Soundicate

Stefan Wienströer schrieb am 05.01.2010:

Kann sein, dass Du deine Mail-Adresse falsch angegeben hast? Hab dir den Code geschickt, doch die Mail ist nicht angekommen. Kannst mich ja per Mail mit der richtigen Adresse anschreiben: info at stevieswebsite.de

Soundicate schrieb am 05.01.2010:

Stimmt, tut mir leid... Vermutlich hab ich auch nur einen dummen Tippfehler drin...-.- Das jetzt müsste die richtige sein:)

Elvis67 schrieb am 27.12.2011:

Kleiner Gedanke a Rande: Man könnte ganz easy abfangen, ob überhauot etwas upgedatet werden muss: function update($newValues, $oldValues, $table){ $difference = array_diff($newValues, $oldValues); if(count($difference) > 0){ $query = "UPDATE ".mysql_real_escape_string($table)." SET "; foreach($newValues as $key=>$value){ $query .= mysql_real_escape_string($key)." = '".mysql_real_escape_string($value)."', "; } $query = substr($query,0,strlen($query)-2); # Komma und Leerzeichen entfernen $query .= " WHERE "; foreach($oldValues as $key=>$value){ $query .= mysql_real_escape_string($key)." = '".mysql_real_escape_string($value)."' AND "; } $query = substr($query,0,strlen($query)-5); # " AND " entfernen if(mysql_query($query)){ return "Update erfolgreich!"; } else { return "Update fehlgeschlagen: ".mysql_error(); } } else { return "Keine Werte geändert!"; } } So kann auch ruhig mal versehentlich auf den Speichern-Button geklickt werden, der Benutzer erhätlt trotzdem eine ordentliche Rückmeldung ;-)