Skip to content
blockademarcPublic

About

PHP-Klausurprojekt zur Seminar- und Teilnehmerverwaltung mit MySQL/MariaDB, PDO und separatem Administrationsbereich.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

EDV-Schule 6

Webanwendung zur Verwaltung von Seminaren, Terminen und Teilnehmern. Ein öffentlicher Angebotsbereich, persönliche Benutzerfunktionen und ein eigener Administrationsbereich greifen auf ein relationales Datenmodell mit MySQL beziehungsweise MariaDB zu.

EDV-Schule 6: Startseite

Entwickelt von Martin Frackowiak als Klausurprojekt im Modul PHPB im Rahmen der Qualifizierung zum Fachinformatiker für Anwendungsentwicklung.

Funktionen

  • Seminar- und Terminübersicht mit Suche und Detailansichten
  • Registrierung, Anmeldung und Bearbeitung des eigenen Profils
  • Anmeldung zu konkreten Seminarterminen, Stornierung und Übersicht der eigenen Buchungen
  • Prüfung auf freie Plätze und zeitliche Buchungskonflikte
  • Kontaktanfragen mit Antworten aus der Administration
  • Verwaltung von Fachbereichen, Seminaren, Terminen, Standorten und Räumen
  • Teilnehmerlisten, Belegungsübersichten und Statistiken
  • SQL-Import, CSV-Testdaten und zusätzliche PHP-Serialisierung von Benutzer- und Seminardaten

Aufbau und Technik

Die Anwendung trennt ein wiederkehrendes Seminarangebot von seinen konkreten Terminen. Die Zuordnung von Benutzern zu Terminen speichert unter anderem Anmeldestatus und Buchungskosten. Länder, Orte, Postleitzahlen und Adressen sind über eigene Tabellen miteinander verknüpft.

Modellklassen kapseln Datenbankzugriffe über PDO. Eine abstrakte Basisklasse, ein Interface, Traits und Namespaces strukturieren den PHP-Code. Templates und eine zentrale Auswahl erlaubter Aktionen setzen die Seiten zusammen.

Technologien: PHP, MySQL/MariaDB, PDO, HTML5, CSS3 und JavaScript. Es werden keine PHP- oder JavaScript-Frameworks eingesetzt.

Vorhandene Schutzmaßnahmen: Passwort-Hashing, vorbereitete SQL-Anweisungen, Rollenprüfungen, CSRF-Tokens für Formularaktionen und HTML-Escaping.

Lokal starten

Voraussetzungen

  • Apache, beispielsweise über XAMPP
  • PHP 8.1 oder neuer mit pdo_mysql und mbstring
  • MySQL oder MariaDB mit Unterstützung für LOAD DATA LOCAL INFILE
  • php.exe und mysql.exe im Suchpfad PATH, wenn die mitgelieferte BAT-Datei verwendet wird

Installation

  1. Den Projektordner edvschule unter das DocumentRoot der lokalen Apache-Installation legen oder einen lokalen VirtualHost auf diesen Ordner richten. Ein Beispiel für Standard-XAMPP ist C:\xampp\htdocs\edvschule.

  2. Apache und MySQL beziehungsweise MariaDB starten.

  3. Die mitgelieferte Standardkonfiguration verwendet localhost, den MySQL-Benutzer root, ein leeres Datenbankpasswort und die Datenbank edvschule6. Diese Werte stehen in classes/Kern/ADatenbank.php und daten/skripte/_serialisierte_daten_erstellen.php. Der BAT-Import verwendet ebenfalls root ohne Passwort. Bei einer abweichenden lokalen Umgebung müssen diese Stellen übereinstimmen.

  4. Für eine neue Testinstallation PowerShell im Projektordner öffnen und den Import starten:

    Datenverlust bei erneutem Import: 001_tabellen_erstellen.sql enthält DROP TABLE-Anweisungen. Der Gesamtimport löscht die vorhandenen Anwendungstabellen in edvschule6, erstellt sie neu und lädt die Testdaten. Eine bestehende Installation zum bloßen Starten direkt im Browser öffnen.

    cd .\daten\skripte
    .\_import_und_serialisiert_alles.bat
  5. Bei der oben gezeigten Standard-XAMPP-Installation das Frontend unter http://localhost/edvschule/ und das Backend unter http://localhost/edvschule/admin/ öffnen. Bei einem eigenen VirtualHost oder Port dessen lokale Adresse verwenden.

Der Projektordner heißt edvschule; Datenbankname und PHP-Namespace bleiben edvschule6 beziehungsweise Edvschule6. includes/config.php enthält den angezeigten Projektnamen und gehört zum Repository.

Testzugänge

Rolle Login Passwort
Administrator admin admin
Teilnehmer user1 123
Teilnehmer user2 123

Die Angaben stammen aus den mitgelieferten Testdaten und der ursprünglichen Projektdokumentation. Die Passwörter sind ausschließlich für die lokale Demonstration vorgesehen.

Testdaten und Serialisierung

Der Datenbestand enthält 112 Benutzer einschließlich Administrator, 32 Seminare, 119 Termine, 929 Buchungen, fünf Standorte und 51 Räume. Die Termine liegen im Jahr 2027. Die CSV-Testdaten basieren auf Kursmaterial und wurden an dieses Datenmodell angepasst.

Der Gesamtimport erzeugt anschließend daten/serialisiert/benutzer.txt und daten/serialisiert/seminare.txt. Diese Laufzeitdateien sind durch .gitignore ausgeschlossen. Die zugehörige index.php, die CSV-Importdaten und die SQL-Skripte bleiben Bestandteil des Repositories.

Dokumentation und Ansichten

Nach der Anmeldung als Administrator ist die Projektdokumentation im Backend über Dokumentation erreichbar. Sie erläutert die Anforderungen in eigenen Worten sowie Datenmodell, Klassenaufbau, Umsetzung und Erfahrungen.

Bearbeitbare Diagramme liegen unter dokumentation/uml_datenbank.dia und dokumentation/uml-klassen.dia. Ihre WEBP-Abbildungen und die Anwendungsscreenshots liegen unter bilder/dokumentation/.

Weitere Ansichten

Terminübersicht

EDV-Schule 6: öffentliche Terminübersicht

Administration

EDV-Schule 6: Terminverwaltung im Backend

Projektstruktur

Verzeichnis Inhalt
admin/ Einstieg und Seitenaufrufe der Administration
classes/ Kernklassen, Modelle und Traits
templates/ Layout, Formulare und Inhaltsansichten
includes/ Autoloading, Projekttitel, Hilfs- und Sicherheitsfunktionen
daten/csv/ Daten für die lokale Testinstallation
daten/skripte/ Schema, Import, Datenprüfungen und Serialisierung
daten/serialisiert/ Lokal erzeugte zusätzliche Datenformate
dokumentation/ Datenmodell und bearbeitbare Dia-Diagramme
bilder/ Projektgrafiken und Dokumentationsabbildungen
css/, js/ Darstellung und ergänzende Bedienfunktionen

Einsatzgrenzen

Das Projekt dient lokalen Lern- und Demonstrationszwecken. Es ist nicht für einen öffentlichen Produktivbetrieb abgesichert. Unter anderem wird nach dem Login die Session-ID nicht erneuert; außerdem verhindern die Schutzdateien keine direkten Abrufe bekannter Pfade zu CSV-Dateien oder erzeugten Serialisierungen. Die veröffentlichten Testzugänge dürfen nicht für einen produktiven Betrieb verwendet werden.

Eine fachliche Einschränkung betrifft den Anmeldeschluss: Er wird gespeichert und angezeigt, beim Absenden einer Buchung aber noch nicht gegen das aktuelle Datum geprüft. Die Freigabe der Buchung richtet sich derzeit nach Terminstatus, Belegung und vorhandenen Buchungen.

Rechte

Dieses Repository enthält keine Open-Source-Lizenz. Die Bereitstellung als Portfolio-Projekt erteilt keine allgemeine Nutzungslizenz für enthaltene Projektbestandteile oder Kursmaterialien.

About

PHP-Klausurprojekt zur Seminar- und Teilnehmerverwaltung mit MySQL/MariaDB, PDO und separatem Administrationsbereich.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages