Datensatz ändern - UPDATE

  • Hallo,

    im folgenden findet ihr ein kleines DB Projekt, bestehend aus einem Eingabe-Formular und einer Ausgabe-Tabelle für die Datensätze. Jeder aufgelistete Datensatz verfügt über eine Bearbeitungs- und Lösch-Funktionen. Bei Aufruf des Bearbeitungs-Links wird der bestehenden Datensatz aus der DB ausgelesen und in das Eingabe-Formular eingeschrieben. Im Anschluss können jetzt die Daten manipuliert werden und bei Aufruf von "Prokjekt aktualisieren" wird der Datensatz aktualisiert.
    Das zur Theorie, allerdings habe ich Probleme bei der Umsetzung der Aktualisierungs-Funktion

    PHP
    function AktualierenProjekt

    . Bei Aufruf der Funktion steht z.B. das in der Adresszeile:

    Zitat

    meineDB.php?id=5&action=aktualisieren

    . Als Ergebnis erhalte ich dann einen leeren Datensatz z.B. #5.
    Hier zum Code:




    Danke Seb

  • So sehr ich mich auch bemühe, aber ich sehe einfach keine Frage. Was möchtest du wissen, wo ist dein Problem?

  • Ich versuche das Problem nochmal zu erklären:

    Es gibt ein Problem mit dieser Funktion:

    PHP
    function AktualierenProjekt( $id, $nummer, $name, $gruppe, $text, $bild )


    Über diesen Link wird die Funktion aufgerufen:

    HTML
    <a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=aktualisieren">Prokjekt aktualisieren</a>


    Nach Aufruf des Links wird diese Abfrage vorgenommen:

    PHP
    elseif ($action == 'aktualisieren')
     {
       $ErrorMessage = AktualierenProjekt( $id, $nummer, $name, $gruppe, $text, $bild );
       if ($ErrorMessage == '')
       {
        $ErrorMessage =  "Projekt wurde aktualisiert!";
       }
     }


    Leider kann ich den Fehler nicht richtig lokalisieren, aber ich denke der Fehler liegt in der oben genannten Funktion.
    Wie bereits gesagt, löscht der Aufruf des Links den bestehenden Datensatzinhalt.

    HTML
    <a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=aktualisieren">Prokjekt aktualisieren</a>


    Ich hoffe, ihr könnt jetzt meine Problem besser verstehen.

  • Klassischer Fall von

    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 4 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Und dann solltest du dir den Unterschied zwischen einem Link und einem Button klarmachen.

  • Hallo Bandit600,

    ich habe das Problem selber lösen können, somit konnte ich Punkt 7 übergehen, :lol:. Es lag gar nicht an der update funktion. Der Fehler lag vielmehr bei der übertragung der Formularwerte...mit dem Link werden halt keine Werte übergeben, nur mit einem Submit Button funktionierts.

  • ja klar, wenn du per GET übergibst (-> URL) steht natürlich nichts im _POST-Array.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • mit dem Link werden halt keine Werte übergeben, nur mit einem Submit Button funktionierts.


    Und genau das hättest du mit "Richtig debuggen" leicht herausfinden können. Einfach das error_reporting hochdrehen und ein paar Variablen ausgeben und schon hätte PHP gemeckert und du hättest sehen können, an welchen Variablen die Sache scheitert! Also bist du nie bis zu Punkt 7 gekommen!!!