Vorlesung 4
PHP und mySQL

Einführung in PHP

Was ist PHP?

PHP (Hypertext Preprocessor) ist eine weit verbreitete Open-Source-Skriptsprache, die speziell für die Webentwicklung entwickelt wurde. Sie kann in HTML eingebettet werden und wird auf dem Server ausgeführt, wodurch dynamische Webseiten und Webanwendungen erstellt werden können.

Geschichte von PHP

PHP wurde 1994 von Rasmus Lerdorf entwickelt. Ursprünglich stand PHP für &quotPersonal Home Page&quot, aber es wurde später in &quotPHP: Hypertext Preprocessor&quot umbenannt, um seine Hauptfunktion besser zu beschreiben. Seit seiner Einführung hat sich PHP stetig weiterentwickelt und ist zu einer der wichtigsten Technologien im Web geworden.

Einsatzbereiche von PHP

PHP wird hauptsächlich für die serverseitige Webentwicklung verwendet. Hier sind einige typische Einsatzbereiche:

  • Erstellung dynamischer Webseiten
  • Formularverarbeitung
  • Interaktion mit Datenbanken
  • Session-Management
  • Erstellung von Webanwendungen

Vorteile von PHP

PHP bietet viele Vorteile, darunter:

  • Einfach zu erlernen: PHP hat eine flache Lernkurve, was es Anfängern leicht macht, einzusteigen.
  • Open Source: PHP ist kostenlos und wird von einer großen Community unterstützt.
  • Plattformunabhängig: PHP läuft auf fast allen Betriebssystemen, einschließlich Windows, Linux und Mac OS.
  • Breite Datenbankunterstützung: PHP unterstützt zahlreiche Datenbanken wie MySQL, PostgreSQL, SQLite und mehr.
  • Große Community: Die PHP-Community ist groß und aktiv, was bedeutet, dass es viele Ressourcen, Tutorials und Support gibt.

Einfache PHP-Syntax

Ein einfaches PHP-Skript, das &quotHello, World!&quot ausgibt, sieht folgendermaßen aus:

<?php
echo "Hello, World!";
?>

Einbetten von PHP in HTML

PHP kann problemlos in HTML eingebettet werden. Hier ist ein Beispiel:

<!DOCTYPE html>
<html>
<head>
    <title>PHP in HTML</title>
</head>
<body>
    <h1><?php echo "Hello, World!"; ?></h1>
</body>
</html>

Fazit

PHP ist eine leistungsstarke und flexible Sprache, die speziell für die Webentwicklung entwickelt wurde. Mit seiner einfachen Syntax und umfangreichen Funktionen ist es eine ausgezeichnete Wahl für Anfänger und erfahrene Entwickler gleichermaßen. PHP bleibt eine der wichtigsten Technologien für die Erstellung dynamischer und interaktiver Webinhalte.

PHP anhand eines Formulars

Einführung

PHP ist besonders nützlich für die Verarbeitung von Formularen, die in HTML erstellt wurden. Ein Formular ermöglicht Benutzern die Eingabe von Daten, die dann vom Server verarbeitet werden können. Hier zeigen wir, wie man ein einfaches Formular erstellt und die Eingaben mit PHP verarbeitet.

HTML-Formular erstellen

Zunächst erstellen wir ein einfaches HTML-Formular, das den Benutzer nach seinem Namen und seiner E-Mail-Adresse fragt.

<!DOCTYPE html>
<html>
<head>
    <title>Einfaches Formular</title>
</head>
<body>
    <h1>Kontaktformular</h1>
    <form action="process_form.php" method="post">
        <label for="name">Name:</label><br>
        <input type="text" id="name" name="name"><br>
        <label for="email">E-Mail:</label><br>
        <input type="email" id="email" name="email"><br><br>
        <input type="submit" value="Absenden">
    </form>
</body>
</html>

Formularverarbeitung mit PHP

Nun erstellen wir die PHP-Datei process_form.php, um die eingegebenen Daten zu verarbeiten. Diese Datei empfängt die Daten aus dem Formular und gibt sie zurück an den Benutzer.

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);
    echo "Vielen Dank, $name!<br>";
    echo "Wir werden Ihnen eine Bestätigung an $email senden.";
}
?>

Erklärung des PHP-Codes

Der PHP-Code überprüft zuerst, ob das Formular mit der POST-Methode gesendet wurde. Anschließend werden die Eingabedaten des Benutzers sicher verarbeitet, indem spezielle HTML-Zeichen mit htmlspecialchars() konvertiert werden, um Sicherheitsrisiken wie Cross-Site Scripting (XSS) zu vermeiden. Schließlich werden die bereinigten Eingabedaten dem Benutzer angezeigt.

Fazit

Mit PHP können Sie Benutzereingaben aus HTML-Formularen einfach verarbeiten und dynamische Inhalte generieren. Dieses Beispiel zeigt die Grundlagen der Formularverarbeitung, die Sie erweitern können, um komplexere Anwendungen zu erstellen.

Fortgeschrittener Kurs in PHP

Programmierung (OOP)

Die objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das auf der Verwendung von Objekten basiert. In PHP können Klassen und Objekte definiert werden, um wiederverwendbaren Code zu schreiben und die Wartbarkeit der Anwendung zu verbessern.

<?php
class Car {
    public $color;
    public $model;

    public function __construct($color, $model) {
        $this->color = $color;
        $this->model = $model;
    }

    public function message() {
        return "My car is a " . $this->color . " " . $this->model . ".";
    }
}

$myCar = new Car("black", "Volvo");
echo $myCar->message();
?>

Datenbankverbindung mit PDO

PHP Data Objects (PDO) ist eine Datenbankabstraktionsschicht, die eine einheitliche Schnittstelle für die Verbindung zu verschiedenen Datenbanken bietet. PDO unterstützt verschiedene Datenbanken wie MySQL, PostgreSQL, SQLite und viele andere.

<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = '';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Verbindung erfolgreich!";
} catch (PDOException $e) {
    echo "Verbindung fehlgeschlagen: " . $e->getMessage();
}
?>

Prepared Statements

Prepared Statements sind eine effiziente und sichere Möglichkeit, SQL-Abfragen in PHP auszuführen. Sie schützen vor SQL-Injection-Angriffen und verbessern die Leistung durch wiederverwendbare Abfragen.

<?php
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(['email' => '[email protected]']);
$user = $stmt->fetch();

if ($user) {
    echo "Benutzer gefunden: " . $user['name'];
} else {
    echo "Benutzer nicht gefunden.";
}
?>

Fehlerbehandlung

Fehlerbehandlung ist ein wichtiger Aspekt der Softwareentwicklung. PHP bietet mehrere Mechanismen zur Fehlerbehandlung, einschließlich der Verwendung von try-catch-Blöcken und benutzerdefinierten Fehler-Handlern.

<?php
function customError($errno, $errstr) {
    echo "Fehler: [$errno] $errstr";
}

set_error_handler("customError");

echo($test); // Verursacht einen Fehler, da $test nicht definiert ist
?>

Sessions und Cookies

Sessions und Cookies werden verwendet, um Benutzerdaten über verschiedene Seiten hinweg zu speichern. Sessions speichern Daten auf dem Server, während Cookies Daten im Browser des Benutzers speichern.

<?php
// Session starten
session_start();
$_SESSION['username'] = 'JohnDoe';

// Cookie setzen
setcookie('user', 'JohnDoe', time() + (86400 * 30), "/"); // 86400 = 1 Tag

// Zugriff auf Session und Cookie
echo "Session-Username: " . $_SESSION['username'];
echo "Cookie-Username: " . $_COOKIE['user'];
?>

API-Erstellung

Mit PHP können RESTful APIs erstellt werden, um Anwendungen zu ermöglichen, miteinander zu kommunizieren. Hier ist ein einfaches Beispiel, wie eine API erstellt wird, die JSON-Daten zurückgibt.

<?php
header("Content-Type: application/json; charset=UTF-8");

$data = [
    "status" => "success",
    "message" => "API funktioniert!"
];

echo json_encode($data);
?>

Fortgeschrittene Themen

Weitere fortgeschrittene Themen in PHP umfassen das Arbeiten mit Composer für die Paketverwaltung, die Verwendung von Namespaces zur Strukturierung des Codes und die Implementierung von Design Patterns für saubere und wartbare Softwarearchitekturen.

Fazit

PHP ist eine vielseitige und leistungsstarke Sprache, die für viele fortgeschrittene Webentwicklungsaufgaben geeignet ist. Mit den hier vorgestellten Techniken können Entwickler robuste und sichere Webanwendungen erstellen.

Verknüpfung von PHP und SQL-Datenbanken

Einführung

PHP ist eine weit verbreitete serverseitige Skriptsprache, die oft verwendet wird, um dynamische Webseiten zu erstellen. Eine der häufigsten Aufgaben in PHP ist die Interaktion mit einer SQL-Datenbank, wie MySQL. Diese Verknüpfung ermöglicht es, Daten aus einer Datenbank zu lesen, zu schreiben, zu aktualisieren und zu löschen.

Verbindung zu einer MySQL-Datenbank herstellen

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, können wir die mysqli-Erweiterung oder PDO (PHP Data Objects) verwenden. Hier zeigen wir beide Methoden.

Verbindung mit mysqli

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
echo "Verbindung erfolgreich";
?>

Verbindung mit PDO

<?php
$dsn = 'mysql:host=localhost;dbname=database';
$username = 'username';
$password = 'password';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Verbindung erfolgreich";
} catch (PDOException $e) {
    echo "Verbindung fehlgeschlagen: " . $e->getMessage();
}
?>

Datenbankabfragen durchführen

Nachdem die Verbindung hergestellt ist, können wir Datenbankabfragen durchführen. Hier sind Beispiele für das Abrufen, Einfügen, Aktualisieren und Löschen von Daten mit mysqli und PDO.

Daten abrufen

Mit mysqli
<?php
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // Ausgabe der Daten jeder Zeile
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 Ergebnisse";
}
$conn->close();
?>
Mit PDO
<?php
$sql = 'SELECT id, firstname, lastname FROM MyGuests';
$stmt = $pdo->query($sql);

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "id: " . $row['id'] . " - Name: " . $row['firstname'] . " " . $row['lastname'] . "<br>";
}
?>

Daten einfügen

Mit mysqli
<?php
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";

if ($conn->query($sql) === TRUE) {
    echo "Neuer Datensatz erfolgreich erstellt";
} else {
    echo "Fehler: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Mit PDO
<?php
$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES (:firstname, :lastname, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['firstname' => 'John', 'lastname' => 'Doe', 'email' => '[email protected]']);
echo "Neuer Datensatz erfolgreich erstellt";
?>

Daten aktualisieren

Mit mysqli
<?php
$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

if ($conn->query($sql) === TRUE) {
    echo "Datensatz erfolgreich aktualisiert";
} else {
    echo "Fehler beim Aktualisieren des Datensatzes: " . $conn->error;
}
$conn->close();
?>
Mit PDO
<?php
$sql = "UPDATE MyGuests SET lastname = :lastname WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['lastname' => 'Doe', 'id' => 2]);
echo "Datensatz erfolgreich aktualisiert";
?>

Daten löschen

Mit mysqli
<?php
$sql = "DELETE FROM MyGuests WHERE id=3";

if ($conn->query($sql) === TRUE) {
    echo "Datensatz erfolgreich gelöscht";
} else {
    echo "Fehler beim Löschen des Datensatzes: " . $conn->error;
}
$conn->close();
?>
Mit PDO
<?php
$sql = "DELETE FROM MyGuests WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 3]);
echo "Datensatz erfolgreich gelöscht";
?>

Zusammenfassung

Die Verknüpfung von PHP und SQL-Datenbanken ermöglicht es Entwicklern, leistungsstarke und dynamische Webanwendungen zu erstellen. Mit PHP können Sie auf einfache Weise Datenbankverbindungen herstellen, Datenbankabfragen durchführen und Daten sicher und effizient verarbeiten.

PHP und SQL Datenbankintegration

Einführung

PHP ist eine weit verbreitete serverseitige Skriptsprache, die oft verwendet wird, um dynamische Webseiten zu erstellen. Eine der häufigsten Aufgaben in PHP ist die Interaktion mit einer SQL-Datenbank, wie MySQL. Diese Verknüpfung ermöglicht es, Daten aus einer Datenbank zu lesen, zu schreiben, zu aktualisieren und zu löschen.

Verbindung zu einer MySQL-Datenbank herstellen

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, können wir die mysqli-Erweiterung oder PDO (PHP Data Objects) verwenden. Hier zeigen wir beide Methoden.

Verbindung mit mysqli

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
echo "Verbindung erfolgreich";
?>

Verbindung mit PDO

<?php
$dsn = 'mysql:host=localhost;dbname=database';
$username = 'username';
$password = 'password';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Verbindung erfolgreich";
} catch (PDOException $e) {
    echo "Verbindung fehlgeschlagen: " . $e->getMessage();
}
?>

HTML-Formular erstellen

Zunächst erstellen wir ein einfaches HTML-Formular, das den Benutzer nach seinem Namen und seiner E-Mail-Adresse fragt. Die Daten werden dann mithilfe von PHP in die Datenbank geschrieben.

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHP und MySQL Beispiel</title>
</head>
<body>
    <h2>Daten eingeben</h2>
    <form action="insert.php" method="post">
        <label for="firstname">Vorname:</label><br>
        <input type="text" id="firstname" name="firstname"><br>
        <label for="lastname">Nachname:</label><br>
        <input type="text" id="lastname" name="lastname"><br>
        <input type="submit" value="Absenden">
    </form>
    <h2>Daten anzeigen</h2>
    <div id="data-output">
        <?php include 'fetch.php'; ?>
    </div>
</body>
</html>

PHP-Skript für die Datenbankverbindung

Erstelle eine Datei namens db_connection.php, die den Code zur Verbindung mit der Datenbank enthält.

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
?>

PHP-Skript zum Einfügen von Daten

Erstelle eine Datei namens insert.php, die die Daten aus dem Formular entgegennimmt und in die Datenbank einfügt.

<?php
include 'db_connection.php';

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];

$sql = "INSERT INTO MyGuests (firstname, lastname) VALUES ('$firstname', '$lastname')";

if ($conn->query($sql) === TRUE) {
    echo "Neuer Datensatz erfolgreich erstellt";
} else {
    echo "Fehler: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

<a href="index.html">Zurück zur Startseite</a>

PHP-Skript zum Abrufen und Anzeigen von Daten

Erstelle eine Datei namens fetch.php, die die Daten aus der Datenbank abruft und anzeigt.

<?php
include 'db_connection.php';

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<ul>";
    while($row = $result->fetch_assoc()) {
        echo "<li>ID: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "</li>";
    }
    echo "</ul>";
} else {
    echo "0 Ergebnisse";
}

$conn->close();
?>

Datenbankstruktur

Stelle sicher, dass du eine Datenbank und eine Tabelle erstellt hast, die mit dem obigen Code kompatibel ist. Hier ist ein Beispiel-SQL-Befehl, um die Tabelle zu erstellen:

CREATE DATABASE database;
USE database;

CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Zusammenfassung

Diese Anleitung zeigt, wie du eine HTML-Webseite mit einem Formular erstellst, das Daten in eine SQL-Datenbank einfügt und wieder ausgibt. Der Prozess umfasst die Erstellung einer Verbindung zur Datenbank, das Einfügen von Daten über ein PHP-Skript und das Abrufen und Anzeigen dieser Daten.