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

Speicherung Daten DBManager Teil 1 (CMS)

Code & Blog Logo

Code & Blog Logo

In unseren DBManager des selbst erstellten CMS können wir bereits einen Datensatz auswählen und ihn in einem Formular anzeigen. Nun müssen wir ihn nur noch Speichern. Dazu ist heute der erste Teil dran. Es dreht sich heute alles um admin/includes/tableitem-edit.php.

Um die Tabelle in der die Datensätze stehen kommt nun ein Form-Tag. Damit wir das ganze auch absenden steht nun in der Tabelle ein Submit-Button:

<form action="<?PHP echo "/admin/index.php?page=tableitem-edit&table=".$_GET['table']."&position=".$_GET['position']; ?>" method="POST">
  <table>
    <?PHP foreach($columns as $column){ ?>
      <tr>
        <td><?PHP if($column['Key']) echo "<img src="/system/images/icons/key.png" />"; ?></td>
        <td><?PHP echo $column['Field']; ?></td>
        <td><?PHP echo $column['Type']; ?></td>
        <td><input onChange="validate('<?PHP echo $column['Field']; ?>',
                 '<?PHP echo $column['Type']; ?>',this.value)"
               name="<?PHP echo $column['Field']; ?>" 
               value="<?PHP echo $data[$column['Field']]; ?>"
                      <?PHP if(getColumnSize($column['Type']))
                      echo " maxlength="".getColumnSize($column['Type']).""";?>></td>
      </tr>
    <?PHP } ?>
    <tr>
      <td></td>
      <td></td>
      <td></td>
      <td><input name="save" type="submit" value="Speichern" /></td>
  </table>
</form>

Wenn nun ein Datensatz gespeichert werden soll, merken wir, dass der Parameter $_POST[’save‘] existiert. Hier durchlaufen wir in einer Schleife alle Spalten und weisen die neuen Werte zu, so sind sie in der Ansicht schon erneuert. In die Variable $olddata muss der alte Datensatz gespeichert werden, damit wir auch später wissen, welcher Datensatz geändert wurde.

Das sieht dann so aus:

$data = mysql_fetch_assoc($res);

  if($_POST['save']){
    $olddata = $data;
    foreach($data as $key=>$value){
      if(isset($_POST[$key])){
        $data[$key] = $_POST[$key];
      }
    }
    //Hier folgt nachher die Änderung in der DB
  }

Kommentare

aioon schrieb am 10.10.2009:

Wäre es nicht übersichtlicher und sauberer, hidden fields zu benutzen? anstatt das alles in eine action zu packen? :) ?page=tableitem-edit&amp;table=".$_GET['table']."&amp;position=".$_GET['position']; ?&gt; ansonsten ganz nett :)

aioon schrieb am 10.10.2009:

irgendwas ging daneben...

Stefan Wienströer schrieb am 10.10.2009:

Ich hatte es vor, dass die Datenbankfelder weitestgehend von den GET-Parametern getrennt werden, damit nicht alle in der Schleife durchgelaufen werden müssen.