[ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten

[ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten | PSD-Tutorials.de

Erstellt von Zaolat, 21.11.2018.

  1. Zaolat

    Zaolat Aktives Mitglied

    1
    Dabei seit:
    11.11.2008
    Beiträge:
    587
    Geschlecht:
    männlich
    Software:
    Adobe Cloud, C4D R18, Magix Music Maker Premium
    Kameratyp:
    Canon EOS 5D Mark III
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Moin Moin,

    ich bastel nun eine ganze Weile an den Code herum, mit dem ich einen bestehenden Datensatz in mySQL bearbeiten möchte.
    Das Anzeigen und löschen der Daten funktioniert soweit. Nur das Bearbeiten nicht.

    Wenn ich den Eintrag bearbeite und auf Speichern klicke, wird danach nichts angezeigt - weder eine Bestätigung, noch ein Fehler.
    Und der Datensatz wurde in der Datenbank auch nicht geändert.

    Kann einer von euch mir sagen, wo mein Fehler ist?
    Meine PHP Kenntnisse sind noch sehr rudimentär.

    Hier der Code:
    Code (Text):
    1.     <?php
    2.                 if(isset($_POST["bearbeiten"]))
    3. {
    4.  
    5.     //Verbindung zur Datenbank herstellen
    6.                 $host_name = 'localhost';
    7.                 $user_name = 'root';
    8.                 $password = '';
    9.                 $database = 'whiteboard';
    10.  
    11.                 $connect = mysqli_connect($host_name, $user_name, $password, $database);
    12.                
    13.     // 2. Prüfe Radio-Button-Auswahl
    14.                 if(isset($_POST["auswahl"])){
    15.  
    16.     // 3. Datenbankabfrage starten
    17.                 $id = $_POST["auswahl"];
    18.                 $abfrage = "SELECT * FROM whiteboard_eintraege WHERE id = $id";
    19.                 $result = mysqli_query($connect, $abfrage);
    20.  
    21.     // 4. Datensatz in Variablen speichern
    22.                 $dsatz = mysqli_fetch_assoc($result);
    23.                 $eintrag = $dsatz["eintrag"];
    24.     //            $done = $dsatz["done"];
    25.  
    26.     // 5. Das Bearbeiten-Formular anzeigen
    27.                 echo "<form action='bearbeiten.php' method='post'>";
    28.                 echo "<input name='id' type='hidden' value='$id'>";
    29.                 echo "<p><input name='eintrag' value='$eintrag'> Eintrag</p>";
    30.  
    31.                 echo "<input name='bearbeitungAbschicken' value='Bearbeitung abschließen' type='submit'>";
    32.                 echo "</form>";
    33.  
    34.                 }
    35.  
    36.     //6. Datensatz aktualisieren mit UPDATE
    37.                 if(isset($_POST["bearbeitungAbschicken"])){
    38.                 $id = $_POST["id"];
    39.                 $eintrag = $_POST["eintrag"];
    40.                 $done = $_POST["done"];
    41.  
    42.     //String für Update-Anweisung erstellen
    43.                 $update = "UPDATE whiteboard_eintraege SET
    44.                 id ='$id',
    45.                 eintrag ='$eintrag',
    46.                 done ='$done',
    47.                 WHERE id = $id";
    48.  
    49.     //MySQL-Anweisung ausführen
    50.                 echo $eintrag . "<p>Schritt MySQL Anweisung</p>";
    51.                 mysqli_query($connect, $update);
    52.  
    53.                 echo "Datensatz bearbeitet.<br>";
    54.                 echo "<a href='whiteboard_admin.php'>zurück zur Übersicht</a>";
    55.                 }
    56.  
    57.     //Wenn der Nutzer in buecher.php keine Auswahl getroffen hat:
    58.                 if(!isset($_POST["auswahl"]) && !isset($_POST["bearbeitungAbschicken"])){
    59.                 echo "Es wurde kein Datensatz ausgewählt.<br>";
    60.                 }
    61. }
    62.        
    63.         ?>
     
    #1      
  2. TutKit

    TutKit Vollzugriff

    Vollzugriff auf sämtliche Inhalte für Photoshop, InDesign, Affinity, 3D, Video & Office

    Suchst du einen effektiven Weg, um deine Geschäftsideen aber auch persönlichen Kenntnisse zu fördern? Teste unsere Lösung mit Vollzugriff auf Tutorials und Vorlagen/Erweiterungen, die dich schneller zum Ziel bringen. Klicke jetzt hier und teste uns kostenlos!

  3. buerzel

    buerzel Versuch macht kluch!

    115
    Dabei seit:
    03.03.2009
    Beiträge:
    10.889
    Geschlecht:
    männlich
    Ort:
    Berlin
    Software:
    Win 10 + Zubehör
    Kameratyp:
    Powershot SX20IS, SX260HS, EOS 700D
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Ohne mich jetzt weiter damit auseinandersetzen zu wollen, scheint mir deine UPDATE-Anweisung doch sehr fraglich. Du willst offensichtlich eine id ändern (set id), benutzt aber als Kriterium eben diese (where id). Fällt dir was auf? :rolleyes:

    https://www.schattenbaum.net/php/update.php
     
    Zuletzt bearbeitet: 21.11.2018
    #2      
    Zaolat gefällt das.
  4. tynick

    tynick nicht mehr oft zu sehen

    471
    Dabei seit:
    29.07.2013
    Beiträge:
    1.599
    Geschlecht:
    männlich
    Software:
    Affinity Photo, HitFilm Pro, Luminar, Aurora HDR, Win 10
    Kameratyp:
    Nikon D5500
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Arbeitest Du in einer Produktivumgebung oder simulierten Produktivumgebung? Gibt es Meldungen wenn Du Deinem Code
    PHP:
    1. ini_set('error_reporting', E_ALL);
    voranstellst?
    Persönlich wäre ich auch sparsam mit Zeilenumbrüchen innerhalb eines Strings, muss aber nicht zwangsläufig in Deiner Serverumgebung ein Problem sein.
     
    #3      
  5. Dagobert68

    Dagobert68 Nicht mehr ganz neu hier

    Dabei seit:
    01.12.2008
    Beiträge:
    213
    Geschlecht:
    weiblich
    Software:
    Win10, PS CS6, Affinity Photo, LR 6, DxO Photo Lab, ACDSee Ultimate 2018, NIK, Photomatix, PTGui Pro
    Kameratyp:
    Canon EOS 5D Mark IV und 7D Mark II
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Moin :)

    Ja, der Teil

    ist sicher eher unbeabsichtigt. Die ID dürfte ja normalerweise nicht geändert werden. Sehe ich genauso wie @buerzel.

    Außerdem solltest du unbedingt alle Formulareingaben vor Übergabe in den Update-String prüfen / validieren. Das ist ganz wichtig, um z.B. SQL-Injection zu verhindern und um sicher zu stellen, dass die Eingaben auch dem entsprechen, was die Datenbankfelder an der Stelle erwarten. (Beispiel: in einem Zahlenfeld, das vom Typ Integer ist, solltest du keine Buchstaben einfügen etc.). Dazu kannst du dir die Filter-Funktionen von PHP mal näher ansehen: http://php.net/manual/de/ref.filter.php und dich auch unbedingt mal mit den sogenannten "prepared statements" beschäftigen: http://php.net/manual/de/mysqli.quickstart.prepared-statements.php, die einiges in Bezug auf Validierung / Bereinigung vereinfachen.

    Das ist für den Anfang eine Menge Stoff und du brauchst auf jeden Fall etwas Geduld mit dir selbst, aber je früher du dich auch mit dem Thema Sicherheit bei Formularen beschäftigst, umso besser :)

    Das löst jetzt nicht direkt und konkret dein Problem, hilft dir aber unter Umständen dabei, einen anderen, sichereren Ansatz für dein Formular zu finden und dich von Anfang an auf den richtigen Weg zu bringen bevor du dir etwas angeeignet hast, was in einer Produktivumgebung nicht eingesetzt werden sollte. ;)

    Viel Erfolg und liebe Grüße,
    Tina
     
    #4      
    Zaolat gefällt das.
  6. webcasi

    webcasi Nicht mehr ganz neu hier

    Dabei seit:
    05.09.2018
    Beiträge:
    59
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Hallo,
    ich sehe es so wie meine Vorposter. Das mit der ID funktioniert nicht. Entweder hast Du die in einer Session oder Du musst Sie irgendwie übergeben. Wenn jemand auf "bearbeiten" des Datensatzes klickt, dann ist die ID des Datensatzes bekannt.
    Die ID sollte nicht veränderbar sein. Wenn dies der Fall ist würde man ja einen neuen Datensatz anlegen müssen, dessen ID dann ggf. automatisch von der DB per auto_increment vergeben wird, oder Du sorgst dafür dass keine doppelt vergeben werden.
     
    #5      
  7. Zaolat

    Zaolat Aktives Mitglied

    1
    Dabei seit:
    11.11.2008
    Beiträge:
    587
    Geschlecht:
    männlich
    Software:
    Adobe Cloud, C4D R18, Magix Music Maker Premium
    Kameratyp:
    Canon EOS 5D Mark III
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Danke für eure Hinweise. Ich habe dies entsprechend angepaßt. Dennoch bekomme ich es mit meinem Code nicht hin, dass der Datensatz in der Datenbank verändert wird.
     
    #6      
  8. webcasi

    webcasi Nicht mehr ganz neu hier

    Dabei seit:
    05.09.2018
    Beiträge:
    59
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    prüfe erst einmal ob $_POST["bearbeiten"] gesetzt ist und dann lass Dir oder uns mal den SQL String ausgeben
     
    #7      
  9. lustig

    lustig Helper

    Dabei seit:
    31.05.2008
    Beiträge:
    1.543
    Geschlecht:
    männlich
    Ort:
    Markranstädt
    Kameratyp:
    D5000
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Versuche es mal mit dieser Änderung:

    Code (Text):
    1.  
    2. echo "<p><input name='eintrag' value='" . $eintrag . "'> Eintrag</p>";
    3.  
     
    #8      
  10. Zaolat

    Zaolat Aktives Mitglied

    1
    Dabei seit:
    11.11.2008
    Beiträge:
    587
    Geschlecht:
    männlich
    Software:
    Adobe Cloud, C4D R18, Magix Music Maker Premium
    Kameratyp:
    Canon EOS 5D Mark III
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Das hat leider auch nicht geholfen.

    Ich habe einiges getestet; leider alles ohne Erfolg. Was funktioniert ist, wenn ich keine Auswahl treffe, mir dann angezeigt wird, dass keine Auswahl getroffen wurde.

    Auch zieht das Formular die Daten korrekt aus der Datenbank und füllt die Formularfelder aus. Wenn ich diese jedoch ändere und auf abschicken klicke, bleibt er auf der Seite; es wird jedoch lediglich der "back_link" angezeigt.

    Soweit ich erprobt habe, wird dieser Code Teil nicht oder nur zum Teil ausgeführt:
    Code (Text):
    1.  
    2. 36.    //6. Datensatz aktualisieren mit UPDATE
    3.  
    4.  
    5. 37.                if(isset($_POST["bearbeitungAbschicken"])){
    6.  
    7.  
    8. 38.                $id = $_POST["id"];
    9.  
    10.  
    11. 39.                $eintrag = $_POST["eintrag"];
    12.  
    13.  
    14. 40.                $done = $_POST["done"];
    15.  
    16.  
    17. 41.
    18.  
    19.  
    20. 42.    //String für Update-Anweisung erstellen
    21.  
    22.  
    23. 43.                $update = "UPDATE whiteboard_eintraege SET
    24.  
    25.  
    26. 44.                id ='$id',
    27.  
    28.  
    29. 45.                eintrag ='$eintrag',
    30.  
    31.  
    32. 46.                done ='$done',
    33.  
    34.  
    35. 47.                WHERE id = $id";
    36.  
    37.  
    38. 48.
    39.  
    40.  
    41. 49.    //MySQL-Anweisung ausführen
    42.  
    43.  
    44. 50.                echo $eintrag . "<p>Schritt MySQL Anweisung</p>";
    45.  
    46.  
    47. 51.                mysqli_query($connect, $update);
    48.  
    49.  
    50. 52.
    51.  
    52.  
    53. 53.                echo "Datensatz bearbeitet.<br>";
    54.  
    55.  
    56. 54.                echo "<a href='whiteboard_admin.php'>zurück zur Übersicht</a>";
    57.  
    58.  
    59. 55.                }
    60.  
     
    Zuletzt bearbeitet: 28.11.2018
    #9      
  11. Zaolat

    Zaolat Aktives Mitglied

    1
    Dabei seit:
    11.11.2008
    Beiträge:
    587
    Geschlecht:
    männlich
    Software:
    Adobe Cloud, C4D R18, Magix Music Maker Premium
    Kameratyp:
    Canon EOS 5D Mark III
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Nach einigen herum probieren, konnte ich das für mich lösen. Ich habe in dem Schritt wo der Datensatz geändert werden soll, mit $Statement gearbeitet. Nun funktioniert es.

    Danke für eure Hilfestellungen!
     
    #10      
  12. webcasi

    webcasi Nicht mehr ganz neu hier

    Dabei seit:
    05.09.2018
    Beiträge:
    59
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    und wie sah die Lösung jetzt aus?
     
    #11      
  13. Zaolat

    Zaolat Aktives Mitglied

    1
    Dabei seit:
    11.11.2008
    Beiträge:
    587
    Geschlecht:
    männlich
    Software:
    Adobe Cloud, C4D R18, Magix Music Maker Premium
    Kameratyp:
    Canon EOS 5D Mark III
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    In der IF Anweisung, in welcher der Datensatz an die Datenbank mitgeteilt werden soll, habe ich vergessen, die Datenbank zu verbinden. Diese Anweisung befindet sich lediglich in der ersten IF Anweisung, welche ja nicht zum Zuge kommt, wenn der submit Button betätigt wird.
     
    #12      
  14. webcasi

    webcasi Nicht mehr ganz neu hier

    Dabei seit:
    05.09.2018
    Beiträge:
    59
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    kannst Du mal für nachfolgende Fragen die Lösung posten?
     
    #13      
  15. Zaolat

    Zaolat Aktives Mitglied

    1
    Dabei seit:
    11.11.2008
    Beiträge:
    587
    Geschlecht:
    männlich
    Software:
    Adobe Cloud, C4D R18, Magix Music Maker Premium
    Kameratyp:
    Canon EOS 5D Mark III
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Die Lösung ist entweder in der If Anweisung " //6. Datensatz aktualisieren mit UPDATE" erneut die Verbindung zur Datenbank aufbauen, oder die Verbindung zur Datenbank ganz zu beginn des Codes einpflegen.

    Anfangs hatte ich die Verbindung zur Datenbank lediglich in der IF Anweisung aufgebaut, wenn $_POST "bearbeiten" ist.
    Da allerdings bei dem Klick auf Submit $_POST sich auf "bearbeitenAbschicken" bezieht, überspringt der Code den Schritt, wo die Verbindung zur Datenbank aufgebaut wird. Daher kann er auch die Daten nicht ändern, weil es keine Verbindung gibt. Als ich in dieser IF-Anweisung die Verbindung zur Datenbank eingefügt habe, funktioniert es.
     
    #14      
  16. webcasi

    webcasi Nicht mehr ganz neu hier

    Dabei seit:
    05.09.2018
    Beiträge:
    59
    [ERLEDIGT][php & mysql] Datensatz per Formular bearbeiten
    Vielen Dank. Dann war ich mit dem Rat $_POST['bearbeiten'] mal auszugeben, doch nicht so falsch.

    :)
     
    #15      
    Zaolat gefällt das.
Seobility SEO Tool
x
×
×