1. Content Management

    WS 2022/2023 — 04/13 (3. November 2022)

  2. Agenda 04/13 (3.11.2022)

    • PHP: Ein wenig Live-Coding
    • Einführung Datenbanken
    • Einrichtung MySQL-Datenbank
    • Wordpress-Setup
  3. Erste Schritte mit PHP

  4. PHP + HTML

    Kombination von PHP-Code-Fragmenten und HTML: Direkte Einbettung!

    <p>
        <?php echo "Hallo Welt!"; ?>
    </p>
    
    Pro
    Sehr performant!
    Contra
    Separation of Concerns
  5. Datenbanken

    Übersicht & Typen

    • Relationale Datenbanken
    • Objektorientierte- bzw. Objektdatenbanken
    • Semistrukturierte Datenbanken
    • NoSQL-Datenbanken
  6. Relationale Datenbanken

    Relational Database Management System (RDBMS)

    • Tabellen und Relationen
    • Zeilen (»Tupel«) stellen jeweils einen Datensatz (»Record«) dar
    • Jedes Tupel hat eine Reihe von Eigenschaften (»Attributes«; Spaltenwerte)
    • Ein Relationen- bzw. Datenbankschema legt die Anzahl und den Typ von Attributen sowie die Zusammenhänge zwischen Datensätzen fest (auch über verschiedene Tabellen hinweg)
    • Datensätze müssen eindeutig identifizierbar sein → sog. »Schlüssel«
    • Einfache Typen sind z.B. Textwerte, Ganzzahlen, Fließkommazahlen, Datumsangaben usw.
  7. Relationale Datenbanken

    Relation »Buch«

    ID Autor Verlag Jahr Titel Datum
    1 Hans Vielschreiber Musterverlag 2007 Wir lernen SQL 13.01.2007
    2 J. Gutenberg Gutenberg und Co. 1452 Drucken leicht gemacht 01.01.1452
    3 G. I. Caesar Handschriftverlag -44 Mein Leben mit Asterix 16.03.-44
    5 Galileo Galilei Inquisition International 1640 Eppur si muove 1641
    6 Charles Darwin Vatikan-Verlag 1860 Adam und Eva 1862
  8. Relationale Datenbanken

    Relation »Nutzer«

    ID Vorname Nachname
    10 Hans Vielschreiber
    11 Jens Mittelleser
    12 Erich Wenigleser
  9. Relationale Datenbanken

    Relation »Entliehen«

    NutzerID BuchID
    10 1
    10 2
    10 3
    12 5
    12 6
  10. Relationale Datenbanken

    Systembeispiele

    • Beispiele: MySQL, MariaDB, PostgreSQL
    • Gut geeignet für häufige, kleine Transaktionen oder große Batch-Operationen mit wenig Schreibzugriffen
  11. Objektdatenbanken

    • Abgeleitet aus der objektorientierten Programmierung
    • Speichern von Objekten mit ihren Attributen und Methoden
    • Das System kennt die Zusammenhänge zwischen Objekten
    • Es werden einzelne Objekte abgefragt, keine Menge von Datensätzen
    • Z.B. IndexedDB (in viele Browser integriert)
  12. Semistrukturierte Datenbanken

    • Hierarchische, baumartige Struktur
    • Kein fest vorgegebenes Schema → Anzahl und Art der Eigenschaften können von Einheit zu Einheit (»Entity«) variieren
    • Typische Vertreter sind z.B. XML-Datenbanken
      • Abfrage per XQuery oder XPath
      • Validierung per DTD oder XML Schema
  13. NoSQL-Datenbanken

    Not only SQL«*

    • Nicht-relational, z.B.
    • Kein festgelegtes Datenbankschema, versuchen Joins zu vermeiden
    • Gut geeignet für viele Lese- und Schreibvorgänge
    • Verteilte Datenbanken möglich
  14. SQL

    Structured Query Language

    • Datenbanksprache zur Definition von Datenstrukturen in relationalen Datenbanken sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen von darauf basierenden Datenbeständen
    • Orientiert sich an der englischen Umgangssprache
    • Standardisiert, z.B. SQL:2011
    • Bindings für viele Programmiersprachen
  15. SQL

    USE `Bibliothek`;
    SHOW TABLES;
    
    

    SELECT * FROM Buch; SELECT * FROM Nutzer WHERE Vorname = "Hans"; SELECT Vorname, Nachname FROM Nutzer ORDER BY Nachname ASC;

    UPDATE Nutzer SET Vorname = "Hänschen" WHERE ID = 10;

    DELETE Nutzer WHERE Nachname LIKE %leser;

  16. SQL

    SELECT `Buch`.`Titel`, `Nutzer`.`Vorname`, `Nutzer`.`Nachname` FROM `Buch`
        INNER JOIN `Entliehen` ON `Entliehen`.`BuchID` = `Buch`.`ID`
        INNER JOIN `Nutzer` ON `Nutzer`.`ID` = `Entliehen`.`NutzerID`;
    
  17. XAMPP Stack

    XAMPP = Apache + MariaDB + PHP + Perl

    • Früher LAMPP (Linux), WAMPP (Windows), MAMPP (MacOS)
    • Vollständiger Technologie-Stack für PHP- und datenbankgetriebene Websites
    • Einfache Installation & Konfiguration
    • Download unter https://www.apachefriends.org/de/index.html

    ACHTUNG: Ihr benötigt keine XAMPP-Installation auf eurem Hetzner-Account, dort ist bereits alles vorhanden. Wenn ihr lokal auf eurem Laptop entwickeln wollt, ist XAMPP eine schnelle Einstiegslösung.

  18. Wordpress-Installation

  19. Aufgabe bis 10.11.2021

    • Selbständige Installation von Wordpress auf deinem Hetzner-Account unter der für Wordpress eingerichteten Subdomain (wordpress.<deinedomain>.de)
    • Nach der Anleitung im Wordpress-Skript (erster Teil "Installation und Einrichtung")