Nina: Update

Guten Abend euch allen,

ich habe ein sehr großes Problem. Ich habe ein Formular mit dem ich Daten in die Datenban bekomme. Nun wurde ich es aber gerne noch so machen, dass ich mit dem gleiche Formular die Daten wieder aus der DB holen kann und dann auch editieren. Ich habe das leider bis jetzt noch nie gemacht. Ich wurde mich sehr freuen, wenn mir dabei jemand helfen könnte, dass ich das auf die Reihe bekomme.

Das habe ich bis jetzt schon gemacht:

<?php
include "ver.php";
if(!empty($_POST))
{
        $sql = "INSERT INTO namen
                (
                    name,

)
                VALUES
                (
                    '" . addslashes($_POST["name"]) . "',
                )
                ";
        mysql_query($sql) OR die(mysql_error());

header("Location: http://www.seiteiminternet.de");
exit;
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Namen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="namen.php">
  <table width="80%" border="0">
    <tr>
      <td width="23%" height="29">Name:</td>
      <td width="77%"><input name="textfield" type="text" size="30"></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" name="Submit" value="eintragen"></td>
    </tr>
  </table>
</form>
</body>
</html>

Gruß Nina

  1. Hallo Nina,

    wenn du weißt, dass du das Formular füllen willst, dann holst du dir die Daten mit einer übergebenen (per GET oder SESSION) ID aus der Datenbank. Dann füllst du entsprechend deine Felder (value oder direkt in Textarea).
    Über ein Hiddenfeld oder über den geänderten Namen des Submit-Button erkennst du auf der verarbeitenden Seite, dass ein Update gemacht werden soll und schreibst die Daten entsprechend ihrer ID in die Datenbank zurück - vergiss aber nicht die ID mit einem Hiddenfeld oder per GET mit zu schicken.

    Schönen Gruß aus München

    die knappschaft

    --
    sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
  2. Privit!

    Am besten fängst Du mit einer ausführlichen Planung an, wie das ganze am Ende aussehen soll:

    Wahrscheinlich hast Du mehr als einen Eintrag in der Datenbank, richtig? (Sonst wäre sie wahrscheinlich auch unnötig. ;-) )
    Das bedeutet also, daß man als erstes mal den Eintrag auswählen muß, den man ändern will. Dazu mußt Du eine Art Liste o.ä. generieren, in der die vorhandenen Einträge stehen, und diese in ein Formular einbauen, so daß man einen davon auswählen kann.
    Diesen schickst Du an ein zweites Formular, das im wesentlichen so aussieht wie das Insert-Formular, das Du schon hast, mit zwei Unterschieden:
    0. Die einzelnen Felder sind schon vorbelegt, nämlich mit den Werten aus der Datenbank.
    1. Es wird kein neuer Eintrag angelegt, sondern ein vorhandener aktualisiert ("UPDATE" statt "INSERT").

    Die notwendige SQL-Syntax findest Du z.B. bei http://www.w3schools.com/sql/.

    Viele Grüße vom Længlich

    1. Hallo,

      so hab das nun mal so gemacht. Aber nun meine Frage noch die finde ich die ID raus, dass die dann auch die richtige übergeben wird? Wisst Ihr was ich meine?

      Hier mal die edit_daten.php

      <?php
      //Konfigurations Datei einbinden
      include "config.php";
      if(!empty($_POST))
      {
              $sql = "INSERT UPDATE name
                      (
                          name,

      )
                      VALUES
                      (
                          '" . addslashes($_POST["name"]) . "',
                      )
                      ";
              mysql_query($sql) OR die(mysql_error());

      header("Location: http://www.meineseiteimnetz.de");
      exit;
      }
      ?>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <title>Namen</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <style type="text/css">
      <!--
      .Stil5 {font-size: 14px; font-weight: bold; }
      -->
      </style>
      </head>

      <body>
      <form name="form1" method="post" action="edit_daten.php">
        <table width="80%" border="0">
          <tr>
            <td width="23%" height="29"><span class="Stil5">Name:</span></td>
            <td width="77%"><input name="name" type="text" id="name" value="<?php echo $_data['name'] ?>" size="30"></td>
          </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td></td>
            <td><input type="submit" name="Submit" value="eintragen"></td>
          </tr>
        </table>
      </form>
      </body>
      </html>

      Gruß Nina

      1. Hallo

        so hab das nun mal so gemacht. Aber nun meine Frage noch die finde ich die ID raus, dass die dann auch die richtige übergeben wird? Wisst Ihr was ich meine?

        Wenn
        in der tabelle eine ID (incl. autoincrement) definiert ist, kannst du dir diese beim SELECT mit ausgeben lassen. Die käme dann im Formular z.B. in ein <input type="hidden"> und würde so mit übergeben werden.

        Tschö, Auge

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        Veranstaltungsdatenbank Vdb 0.1
        1. Hallo,

          *grml* ich bin jetzt den ganzen Abend da schon dran ich kapier das einfach nicht. Ich komme da einfach nicht weiter. Hmm kann mir denn da noch jemand helfen?

          Gruß Nina

          1. Hallo

            *grml* ich bin jetzt den ganzen Abend da schon dran ich kapier das einfach nicht. Ich komme da einfach nicht weiter. Hmm kann mir denn da noch jemand helfen?

            Hat deine Datenbanktabelle überhaupt ein Feld für die ID?

            Wenn ja, dann gilt das hier gesagte. Falls nicht, musst du sehen, dass du die Daten in eine neue Tabelle überführst, wobei jeder Datensatz eine eindeutige Kennung (ID) bekommt.
            Vielleicht kann man den Datensätzen in der Tabelle nachträglich eine ID verpassen. Da bin ich mir aber keineswegs sicher.

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)
            Veranstaltungsdatenbank Vdb 0.1
      2. Jambo!

        so hab das nun mal so gemacht. Aber nun meine Frage noch die finde ich die ID raus, dass die dann auch die richtige übergeben wird? Wisst Ihr was ich meine?

        Eine ID solltest Du in der Datenbank finden; hat Auge ja schon geschrieben.

        Hier mal die edit_daten.php

        Das ist dasjenige Formular, in dem man die neuen Daten eingeben soll, richtig? Das heißt, es wurde bereits in einem anderen Formular der betreffende Datensatz ausgewählt und dessen ID (wie von Auge beschrieben) an dieses übergeben.

        <?php
        //Konfigurations Datei einbinden
        include "config.php";
        if(!empty($_POST))
        {
                $sql = "INSERT UPDATE name

        Hier stimmt was nicht: Verwende entweder "INSERT", um einen neuen Eintrag hinzuzufügen, oder "UPDATE", um einen vorhandenen zu bearbeiten, aber nicht beide zusammen. Im vorliegenden Fall ist "UPDATE" die richtige Wahl, denn das "INSERT"-Formular hast Du ja schon.

        (
                            name,

        )
                        VALUES
                        (
                            '" . addslashes($_POST["name"]) . "',
                        )
                        ";
                mysql_query($sql) OR die(mysql_error());

        header("Location: http://www.meineseiteimnetz.de");
        exit;
        }
        ?>

        Sorry, aber es wird ein bißchen aufwendiger. ;-)
        Als erstes mußt Du checken, wo der Benutzer herkommt; es gibt 3 Möglichkeiten:
        0. Er hat direkt dieses Formular angefordert, und $_POST ist leer.
        1. Er kommt vom Auswahlformular, und $_POST enthält die ID des Datensatzes, der geändert werden soll.
        2. Er hat dieses Formular bereits ausgefüllt, und $_POST enthält die ganzen neuen Daten, die gespeichert werden sollen.

        Entsprechend die Reaktion:
        0. Eine Meldung ausgeben, daß erst in dem anderen Formular ein Eintrag ausgewählt werden muß (am besten mit Link), oder gleich eine Umleitung.
        1. Mittels "SELECT" den gewählten Eintrag aus der Datenbank holen und das Formular anzeigen; dabei alle Felder mit den entsprechenden Daten vorbelegen (so wie bei dem Namen unten). Hierbei nicht die ID vergessen, die muß auch wieder mitgegeben werden!
        2. Mittels "UPDATE" die neuen Daten speichern und eine Juhuu-es-hat-geklappt-Meldung ausgeben (oder eine Fehlermeldung, wenn's mal nicht klappt).

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
        <title>Namen</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <style type="text/css">
        <!--
        .Stil5 {font-size: 14px; font-weight: bold; }
        -->
        </style>
        </head>

        <body>
        <form name="form1" method="post" action="edit_daten.php">
          <table width="80%" border="0">
            <tr>
              <td width="23%" height="29"><span class="Stil5">Name:</span></td>
              <td width="77%"><input name="name" type="text" id="name" value="<?php echo $_data['name'] ?>" size="30"></td>
            </tr>
            <tr>
              <td></td>
              <td></td>
            </tr>
            <tr>
              <td></td>
              <td><input type="submit" name="Submit" value="eintragen"></td>
            </tr>
          </table>
        </form>
        </body>
        </html>

        Ist an der Vorgehensweise noch was unklar? Oder hängt es an SQL oder PHP?

        Viele Grüße vom Længlich