Einen Datensatz einer MySQL-Datenbank bearbeiten

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

  • Einen Datensatz einer MySQL-Datenbank bearbeiten

    Hallo zusammen,

    ich habe mich soeben hier angemeldet, da ich bei einem Problem nicht weiterkomme und auf eure Hilfe hoffe. Ich habe mir auch ein Buch gekauft un die entsprechenden Kapitel durchgearbeitet, aber ich komme alleine nicht weiter.

    Ich würde gerne einen Datensatz einer MySQL-Datenbank bearbeiten. Es geht um 1 Textfeld und zwei Ja/Nein-Radiobuttons.

    Ich nutze PDO und die Datensatzauswahl per URl-Parameter gelingt schonmal.

    Mein Script sieht momentan so aus.

    PHP-Code:
    <?php

    $pdo 
    = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8mb4''xxx''xxx');

    if(isset(
    $_GET['id'])) { //ID aus URL-Parameter auslesen
       
    $id $_GET['id'];
    } else {
       die(
    "Fehler!");
    }

    $idclean htmlspecialchars($id); // Sonderzeichen aus ID entfernen

    $muster "/^[0-9]{3,5}$/"//ID Prüfen,ob sie nur aus 3-5-stelligen Zahl besteht und entsprechenden Datensatz einlesen
    if(preg_match($muster$idclean)) {
       
    $sql "SELECT id, F35, F37, F39, F119, F120 FROM mustertabelle WHERE F117 = 'Ja' AND F118 = 'Nein' AND id = $id";
    } else {
       die(
    "Fehler!");
    }

    foreach (
    $pdo->query($sql) as $row) {
        
    $nr $row['id'];
        
    $name $row['F35'];
        
    $beschreibung $row['F37'];
        
    $bemerkung $row['F39'];
    }

    ?><!DOCTYPE html>
    <html lang="de">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
            <meta http-equiv="Pragma" content="no-cache" />
            <meta http-equiv="Expires" content="0" />
            <title>test</title>
            <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
            <link href="css.css" rel="stylesheet">
        </head>
        <body>
            <h2>Detailansicht <?php echo $nr ?></h2>  <!-- Nicht änderbar -->
            <table class="table table-borderless">
                <tbody>
                    <tr class="align-middle">
                        <th scope="row">Name:</th>  <!-- Nicht änderbar -->
                        <td><?php echo $name ?></td>
                    </tr>
                    <tr>
                        <th scope="row">Beschreibung:</th>  <!-- Nicht änderbar -->
                        <td><?php echo $beschreibung ?></td>
                    </tr>
                    <tr>
                        <th scope="row">Bemerkung:</th>  <!-- Änderbar -->
                        <td>
                              <textarea class="form-control" id="TextareaBemerkung" rows="5"><?php echo $bemerkung ?></textarea>
                        </td>
                    </tr>
                    <tr>
                        <th scope="row">Radiobutton Feld F119 Wert Ja/Nein</th>  <!-- Änderbar -->
                        <td>
                            <div class="form-check form-check-inline">
                                <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="Ja">
                                <label class="form-check-label" for="inlineRadio1">Ja</label>
                            </div>
                            <div class="form-check form-check-inline">
                                <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="Nein">
                                <label class="form-check-label" for="inlineRadio2">Nein</label>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <th scope="row">Radiobutton Feld F120 Wert Ja/Nein</th>  <!-- Änderbar -->
                        <td>
                            <div class="form-check form-check-inline">
                                <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="Ja">
                                <label class="form-check-label" for="inlineRadio3">Ja</label>
                            </div>
                            <div class="form-check form-check-inline">
                                <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio4" value="Nein">
                                <label class="form-check-label" for="inlineRadio4">Nein</label>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
                <a href="index.php"><button class="btn btn-primary" type="button">Speichern und zurück zur Übersicht</button></a>  <!-- Eingaben speichern und zurück zur Datensatzauswahl -->
        </body>
    </html>​
    Wie bekomme ich es hin, das der Inhalt des Texfeldes und der beiden Radiobuttons ausgelesen, geändert und per Button wieder gespeichert werden?


    Über einen Tipp würde ich mich sehr freuen.

    Vielen Dank und viele Grüße

    Frank​

  • #2
    Wenn du kein form-Element nutzt, wird das nichts.

    Kommentar


    • #3
      scatello: Vielen Dank für deine Antwort!

      Ich bin jetzt mit Hilfe des Buches etwas weiter gekommen.


      Es gibt ja eine Tabelle (Datei index.php), in der alle Datensätze erfasst sind. Von dort aus enthält jede Zeile einen Link auf die Detailansicht (Datei details.php?id=999), die das Script enthält, was ich in #1 verlink habe.

      Dort ist auch ein "Speichern"-Button enthalten, der nach der Datenübernahme aus dem Formular zurück zur Seite ("index.php") führen soll.

      Ich habe in meinem obigen Script jetzt das Form-Element verwendet und kann die eingegeben Daten nach Prüfung in Variablen speichern.


      Meine Frage: Ist es sinnvoll den Vorgang "Speichern" und "Weiterleiten auf index.php" in eine weitere Datei (speichern.php?) auszulagern?


      Vielen Dank und viele Grüße
      Frank
      Zuletzt geändert von fawin; 07.03.2023, 14:04.

      Kommentar


      • #4
        Das ist nicht unbedingt notwendig. Man nennt das so wie du es jetzt wohl hast Affenformular und ist eine durchaus gängige Praxis.

        Noch als Hinweis: Du verwendest htmlspecialchars falsch. Das macht nicht das was du erwartest, sondern ist zu verwenden wenn du etwas in HTML ausgeben willst.
        Ich würde empfehlen prepared statements zu verwenden. Das ist die sicherste Variante.

        Kommentar

        Lädt...
        X