Verwenden Sie PHP, um Informationen aus einem HTML-Formular in eine MySQL/MariaDB-Datenbank einzufügen

Ein PHP-Skript ist eine komfortable Möglichkeit, Informationen aus dem HTML-Formular einer Website zu übernehmen und in eine MySQL/MariaDB-Datenbank einzufügen. Dieses Tutorial behandelt die Erstellung eines einfachen PHP-Skripts zum Einfügen von Daten und eines HTML-Formulars, um Benutzereingaben von einer Webseite zu übernehmen und an das PHP-Skript weiterzugeben.

    Anforderungen

    • Ein Cloud Server unter Linux (jede Distribution)
    • Apache, MySQL/MariaDB und PHP installiert und ausgeführt.
    Hinweis

    Apache, MySQL/MariaDB und PHP sind standardmäßig auf einer Standardinstallation installiert und laufen dort. Wenn Ihr Server mit einer Minimalinstallation erstellt wurde, müssen Sie Apache, MySQL/MariaDB und PHP installieren und konfigurieren, bevor Sie fortfahren können.

    Erstellen der MySQL/MariaDB-Datenbank und des Benutzers

    Für dieses Tutorial werden wir eine Webseite für ein imaginäres Restaurant erstellen. Die Webseite wird es den Kunden ermöglichen, Bewertungen des Restaurants abzugeben.

    Melden Sie sich am MySQL/MariaDB-Client der Befehlszeile an:

    mysql -u root -p

    Erstellen Sie eine Datenbank für die Reviews:

    CREATE DATABASE reviews;

    Wechseln Sie zu dieser Datenbank:

    USE reviews;

    Für dieses Beispiel werden wir nur eine Tabelle erstellen. Es wird drei Felder haben:

    • Ein ID-Feld: Dies wird auf Auto-Inkrement gesetzt.
    • Name des Prüfers: Ein Textfeld mit einer Länge von 100 Zeichen.
    • Eine Sternenbewertung: Eine numerische Bewertung von 1-5 TINYINT
    • Überprüfen Sie die Details: Ein Textfeld mit einer Grenze von ca. 500 Wörtern. VARCHAR(4000)

    Erstellen Sie die Tabelle:

    CREATE TABLE user_review (
      id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      reviewer_name CHAR(100),
      star_rating TINYINT,
      details VARCHAR(4000)
      ); 

    Aus Sicherheitsgründen ist es immer am besten, für jede Datenbank einen eindeutigen Benutzer anzulegen, insbesondere wenn von einer Website aus auf diese Datenbank zugegriffen wird.

    Der folgende Befehl erstellt eine user review_site mit dem Passwort JxSLRkdutW und gewährt dem Benutzer Zugriff auf die Revisions-Datenbank:

    GRANT ALL ON reviews.* to review_site@localhost IDENTIFIED BY 'JxSLRkdutW';

    Webhosting auf dedizierter Hardware von IONOS!

    Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting auf dedizierter Hardware inklusive persönlichem Berater.

    Schnell
    Einfach
    Sicher

    Erstellen Sie das HTML-Formular für die Webseite

    Erstellen Sie die Datei reviews.html in Ihrem Webspace und öffnen Sie sie zur Bearbeitung. Um beispielsweise die Datei in /var/wwww/html zu erstellen, lautet der Befehl:

    sudo nano /var/www/html/reviews.html

    Den folgenden Inhalt in diese Datei einfügen:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <body>
    
      <p>Let us know how we're doing!</p>
    
      <form action="addreview.php" method="POST">
    
          Your name: <input type="text" name="reviewer_name"><br><br>
    
          How many stars would you give us? 
            <select name="star_rating">
              <option value="1">1 star</option>
              <option value="2">2 stars</option>
              <option value="3">3 stars</option>
              <option value="4">4 stars</option>
              <option value="5">5 stars</option>
            </select><br><br>
    
          Your review: <br>
            <textarea name="details" rows="10" cols="30"></textarea><br><br>
    
          <input type="submit" value="Submit" name="submit">
    
      </form>
    
    </body>
    </html>

    Ein paar Dinge, die man über dieses grundlegende HTML-Formular beachten sollte:

    • Dieses Formular verwendet die POST-Methode, um Daten an das PHP-Skript addreview.php zu übergeben.
    • Der Name für jedes Eingabefeld wird im nächsten Schritt als PHP-Variablenname verwendet. In der Regel ist es sinnvoll, für diese Werte den Feldnamen der Datenbanktabelle zu verwenden.
    • Vertrauen Sie niemals Benutzereingaben. In diesem Beispiel benötigen wir für die Sternenbewertung eine Zahl von 1 bis 5. Wenn wir die Benutzer bitten würden, ihre Sternenbewertung manuell einzugeben, würden die Leute zwangsläufig das Falsche eingeben. Wenn zutreffend, ist es am besten, die Benutzer zu bitten, aus einem Dropdown-Menü mit den richtigen Werten auszuwählen, die bereits ausgefüllt sind.

    Erstellen Sie das PHP-Skript

    Erstellen Sie eine Datei addreview.php in Ihrem Webspace und öffnen Sie sie zur Bearbeitung. Um beispielsweise die Datei in /var/wwww/html zu erstellen, lautet der Befehl:

    sudo nano /var/www/html/addreview.php

    Jedes PHP-Skript muss mit dem Tag PHP opening beginnen:

    <?php

    Fügen Sie anschließend einen MySQL/MariaDB-Verbindungsblock mit dem Serverstandort (localhost), dem Datenbanknamen sowie dem Datenbankbenutzernamen und dem Passwort hinzu.

    $hostname = "localhost";
    $username = "review_site";
    $password = "JxSLRkdutW";
    $db = "reviews";

    Dann fügen wir einen Abschnitt hinzu, um eine Verbindung zur Datenbank herzustellen, und geben einen Fehler an, wenn die Verbindung fehlschlägt:

    $dbconnect=mysqli_connect($hostname,$username,$password,$db);
    
    if ($dbconnect->connect_error) {
      die("Database connection failed: " . $dbconnect->connect_error);
    }

    Als nächstes "übersetzen" wir die Daten aus dem HTML-Formular in PHP-Variablen:

    if(isset($_POST['submit'])) {
      $reviewer_name=$_POST['reviewer_name'];
      $star_rating=$_POST['star_rating'];
      $details=$_POST['details'];

    Fügen Sie dann diese Informationen in die Datenbank ein:

      $query = "INSERT INTO user_review (reviewer_name, star_rating, details)
      VALUES ('$reviewer_name', '$star_rating', '$details')";

    Fügen Sie eine verschachtelte if-Anweisung hinzu, die eine Fehlermeldung ausgibt, wenn der Prozess fehlschlägt, oder danken Sie dem Benutzer für seine Überprüfung, wenn er erfolgreich ist:

        if (!mysqli_query($dbconnect, $query)) {
            die('An error occurred when submitting your review.');
        } else {
          echo "Thanks for your review.";
        }

    Und schließlich schließen Sie die opening if-Anweisung und fügen Sie ein PHP closing tag hinzu:

    }
    ?>
    Hinweis

    Wenn Sie die Fehlermeldung "Datenbankverbindung fehlgeschlagen: Zugriff für Benutzer'review_site'@'localhost' verweigert (mit Passwort: JA)" können Sie die Anmeldeinformationen testen, indem Sie sich von der Kommandozeile aus mit dem Befehl bei MySQL/MariaDB anmelden:

    mysql -u review_site -p reviews

    Um das Skript zu testen, besuchen Sie reviews.html in einem Browser und senden Sie eine Rezension. Melden Sie sich dann mit dem MySQL/MariaDB-Client auf der Kommandozeile in der Review-Datenbank an:

    mysql -u root -p reviews

    Verwenden Sie SELECT * FROM user_review, um den gesamten Inhalt der Tabelle anzuzeigen:

    MariaDB [reviews]> SELECT * FROM user_review;
    +----+---------------+-------------+---------------------------------------------------------+
    | id | reviewer_name | star_rating | details                                                 |
    +----+---------------+-------------+---------------------------------------------------------+
    |  1 | Ben           |           5 | Love the calzone!                                      |    
    |  2 | Leslie        |           1 | Calzones are the worst.                              |
    +----+---------------+-------------+---------------------------------------------------------+
    2 rows in set (0.00 sec)

    Das vollständige PHP-Skript lautet:

    <?php
    
    $hostname = "localhost";
    $username = "review_site";
    $password = "JxSLRkdutW";
    $db = "reviews";
    
    $dbconnect=mysqli_connect($hostname,$username,$password,$db);
    
    if ($dbconnect->connect_error) {
      die("Database connection failed: " . $dbconnect->connect_error);
    }
    
    if(isset($_POST['submit'])) {
      $reviewer_name=$_POST['reviewer_name'];
      $star_rating=$_POST['star_rating'];
      $details=$_POST['details'];
    
      $query = "INSERT INTO user_review (reviewer_name, star_rating, details)
      VALUES ('$reviewer_name', '$star_rating', '$details')";
    
        if (!mysqli_query($dbconnect, $query)) {
            die('An error occurred. Your review has not been submitted.');
        } else {
          echo "Thanks for your review.";
        }
    
    }
    ?>

    Cloud Backup von IONOS

    Maximaler Schutz für Ihre Unternehmensdaten: Einfache Backups für Cloud-Infrastruktur, PCs und Smartphones, inklusive persönlichem Berater!

    Umfassender Schutz
    Einfache Wiederherstellung
    Schnelle Datenspeicherung

    Auf dem Laufenden bleiben?

    Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!