Datensatz updaten / Formular

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datensatz updaten / Formular

    Hi,

    ich habe ein kleines test Gästebuch gemacht das auf eine MySql Datenbank zurück greift. Das Gästebuch funktioniert auch einwandfrei, man kann Sachen eintragen und dann anzeigen lassen.
    Jetzt will ich natürlich eine Update Funktion einbauen, damit den Beitrag evtl. ändern kann, fals man sich verschrieben hat.
    Ich hab das bisher folgendermaßen gelöst:
    gaestebuch2.php
    lässt alle Einträge mit ID´s anzeigen und man kann mit Hilfe eines Formulars die gewünschte ID des zu änderten Beitrags angeben.
    Diese wird dann per Post in einer Variable ($id) an
    eintrag2.php übergeben:
    In eintrag2.php lass ich dann den Datensatz mit der übergebenen id($id) herausfiltern:

    $res = mysql_query("select id, datum, name, eintrag
    from meldung where id = '$id'
    order by datum desc");

    So weit so gut, damit ich natürlich weiss, was in dem Beitrag schon drinsteht, um ihn dann korrigieren zu können, les ich den aktuellen Datensatz aus($current_eintrag) und übergeb die Variable im textfeld aus:

    while ($row = mysql_fetch_array($res)){

    $current_id = htmlentities($row["id"]);
    $current_name = htmlentities($row["name"]);
    $current_datum = $row["datum"];
    $current_eintrag = nl2br(htmlentities($row["eintrag"]));

    echo "<table align=\"center\" border=\"0\" width=\"80%\">\n";

    printf("<form action=\"../gaestebuch2.php\" method=\"POST\">
    <p align=\"center\"><input type=text name=id
    value=\"$current_id\"></p>\n");

    printf("<h4>Name:</h4>
    <br><p align=\"center\"><input type=text name=\"name\" value=\"$current_name\">
    </p>\n");

    printf("<h5 align=\"center\">News vom $current_datum</h5>\n");

    printf("<h4>Text:</h4><p align=\"center\"><textarea rows=\"10\" cols=\"50\"
    wrap=\"virtual\" name=\"eintrag\">$current_eintrag</textarea>\n");

    printf("<br><p align=\"Center\">
    <input type=\"submit\" name=\"submit\" value=\"edit\"></p></form>");

    echo "</table>\n";

    }

    Bis hier hin funktioniert alles einwandfrei...

    Mein Problem oder Denkfehler ist jetzt:

    Da ich ja im Textfeld die Variable $current_eintrag schon als Value drin stehen hab, was ja auch an sich sinnvoll ist, weil man ja gleich wissen muss was im Beitrag drin steht, übergibt oder sendet er ja beim abschicken automatisch den bereits vorhandenen Beitrag was ja Quatsch ist. Wir könnte ich das anders lösen, das der Text, vom vorhandenen Beitrag, im Textfeld drin steht aber das was ich dann zusätzlich oder neuschreibt per GET dann übergibt und den Datensatz updatet?!
    Hoffentlich hab ich das Problem gut beschrieben, bin um jede Antwort froh!
    Danke...Gruß Thomas

    Hier der Gesamte Code:

    <?php

    include("../verbindung.php");

    ?>

    <?php

    if ($submit){
    // Der Submit - Button wurde gedrückt
    // -> die Werte müssen überprüft
    // und bei Gültigkeit in die DB eingefügt werden

    // wir gehen von der Gültigkeit der Daten aus
    $DatenOK = 1;

    // es gab noch keine Fehlermeldung
    $error = "";

    if ($eintrag == ""){
    // es wurde kein Komementar eingegeben
    $DatenOK = 0;
    $error .= "Text vergessen?";
    $error .= " Sinn, oder?<br>\n";
    }

    if ($DatenOK){

    mysql_query("update meldung set eintrag = '$current_eintrag' where id = '$current_id'");

    echo mysql_error();

    // Daten waren OK ->
    header('http://members.tripod.de/thomasreichelt/gaestebuch2.php');
    // und fertig...
    die();
    }

    }
    ?>

    <html>
    <head>
    <title>Neuer Eintrag in unser GB</title>
    </head>
    <body bgcolor="#E8E8FF">
    <?php

    $res = mysql_query("select id, datum, name, eintrag
    from meldung where id = '$id'
    order by datum desc");
    echo mysql_error();

    $id = htmlentities(addslashes(chop($id)));


    printf("<h2>Beitrag Nummer: $id</h2>");


    while ($row = mysql_fetch_array($res)){

    $current_id = htmlentities($row["id"]);
    $current_name = htmlentities($row["name"]);
    $current_datum = $row["datum"];
    $current_eintrag = nl2br(htmlentities($row["eintrag"]));

    echo "<table align=\"center\" border=\"0\" width=\"80%\">\n";

    printf("<form action=\"<?php echo $PHP_SELF; ?>\" method=\"GET\">
    <p align=\"center\"><input type=text name=id
    value=\"$current_id\"></p>\n");

    printf("<h4>Name:</h4>
    <br><p align=\"center\"><input type=text name=\"name\" value=\"$current_name\">
    </p>\n");

    printf("<h5 align=\"center\">News vom $current_datum</h5>\n");

    printf("<h4>Text:</h4><p align=\"center\"><textarea rows=\"10\" cols=\"50\"
    wrap=\"virtual\" name=\"eintrag\">$current_eintrag</textarea>\n");

    printf("<br><p align=\"Center\">
    <input type=\"submit\" name=\"submit\" value=\"edit\"></p></form>");

    echo "</table>\n";

    }

    ?>
    <br>


    <br>
    <p align="Center"><a href="../gaestebuch2.php"><img src="../back_post_f2.gif" border="0"></a></p>
    </body>
    </html>

  • #2
    Mir ist jetzt noch was eigefallen! Ich weiss aber nicht ob das zu realisieren ist!?
    Hier der Gedanke:
    Ich gib als Value im Textfeld einfach wieder den vorhandenen Datensatz an also $current_eintrag zusätzlich den Befehl <?php echo $eintrag; ?> jetzt versendet er ja den inhalt des alten Inhalt + den veränderten....jetzt könnte man doch irgendwie sagen das er beim versenden die variable $current_eintrag rausfiltert und nicht versendet und somit nur <?php echo $name; ?> per GET übergibt.
    Würde das so gehen und wie würde in etwa der syntax ausehen?!

    Kommentar


    • #3
      pack den bisherigen eintrag halt einfach nicht in ein textfeld das als variable versendet wird sondern spuck den text einfach so als text aus.
      CAITS MovieBase für Windows - Filme verwalten mit System!

      CAITS PowerCounter - mehr Statistik gibt es nicht!

      Kommentar


      • #4
        Ja aber da geht doch der Sinn verloren denn so müsste man ja immer den Text in das Textfeld von Hand rein kopieren...ziemlich umständlich wie ich finde...
        Zuletzt geändert von tomtherock; 12.06.2002, 14:57.

        Kommentar

        Lädt...
        X