# PHP Übungsaufgaben: PDO & File Handling ## PDO Aufgaben ### Aufgabe 1: Benutzerverwaltung mit PDO X Erstelle ein Verwaltungssystem für Benutzer mit folgenden Features: - Datenbank `benutzer_verwaltung` mit Tabelle `users` (id, username, email, created_at, status) - CRUD-Operationen (Create, Read, Update, Delete) mit PDO - Prepared Statements für alle Queries - Error Handling mit try-catch - Pagination für die Benutzeranzeige (20 Benutzer pro Seite) **Bonusaufgabe:** Implementiere eine Suchfunktion, die nach username oder email filtert. --- ### Aufgabe 2: Transaktionen und Rollback X Erstelle ein Bestell-System mit zwei Tabellen: - `produkte` (id, name, preis, lagerbestand) - `bestellungen` (id, produkt_id, anzahl, datum) Implementiere eine Bestellfunktion, die: - Den Lagerbestand prüft - Bei ausreichendem Lager eine Bestellung anlegt UND den Lagerbestand reduziert - PDO-Transaktionen nutzt (beginTransaction, commit, rollback) - Bei Fehlern oder fehlendem Lagerbestand einen Rollback durchführt --- ## File Handling Aufgaben ### Aufgabe 3: Log-System (TXT) X Entwickle ein mehrstufiges Logging-System: - Schreibe Logs in verschiedene Dateien: `error.log`, `access.log`, `debug.log` - Jeder Log-Eintrag enthält: Timestamp, Log-Level (ERROR/INFO/DEBUG), Nachricht - Implementiere eine Funktion `writeLog($level, $message)` - Erstelle eine Funktion, die die letzten N Zeilen einer Log-Datei ausliest **Bonusaufgabe:** Implementiere Log-Rotation (wenn Datei > 1MB, erstelle neue Datei mit Timestamp). --- ### Aufgabe 4: CSV Import/Export System Erstelle ein System für Produktdaten: - **Import:** Lese CSV-Datei mit Produkten (ID, Name, Preis, Kategorie) und importiere sie in eine Datenbank - **Export:** Exportiere Datenbankeinträge als CSV-Datei - Validierung der CSV-Daten (Preis muss numerisch sein, Pflichtfelder prüfen) - Fehlerhafte Zeilen in separate `fehler.csv` schreiben --- ### Aufgabe 5: XML Konfigurationsdatei (XML) Erstelle ein Konfigurations-Management-System: - Lese eine XML-Konfigurationsdatei mit Datenbank-Verbindungsparametern, E-Mail-Settings, etc. - Schreibe eine Klasse `ConfigManager`, die: - XML mit SimpleXML oder DOMDocument parst - Konfigurationswerte auslesen kann (`getConfig('database.host')`) - Konfigurationswerte ändern und zurück in XML schreiben kann - Erstelle eine Funktion, die XML nach JSON konvertiert --- ## Kombinierte Aufgabe ### Aufgabe 6: Kontaktverwaltung mit Multi-Format Support Entwickle eine vollständige Kontaktverwaltung: - **Datenbank:** Tabelle `kontakte` (id, vorname, nachname, email, telefon, firma) - **PDO:** Alle CRUD-Operationen mit PDO - **Export-Funktionen:** - Als CSV exportieren - Als XML exportieren - Als JSON exportieren (bonus) - **Import-Funktionen:** - CSV-Import mit Validierung - XML-Import - **Logging:** Alle Aktionen (Erstellen, Ändern, Löschen) in `contacts.log` protokollieren **Anforderungen:** - Fehlerbehandlung bei allen File- und DB-Operationen - Prepared Statements für SQL - Datei-Upload für CSV/XML-Import - Benutzerfreundliche Fehler-/Erfolgsmeldungen --- ## Zusätzliche Challenges ### Challenge 1: Backup-System Erstelle ein automatisches Backup-System: - Exportiere komplette Datenbank-Tabelle als SQL-Dump in TXT-Datei - Komprimiere Backup mit ZIP - Speichere mit Timestamp im Dateinamen - Alte Backups (> 7 Tage) automatisch löschen --- ### Challenge 2: XML-Feed-Parser Erstelle einen RSS/XML-Feed-Parser: - Parse einen externen XML-Feed (z.B. News-Feed) - Speichere relevante Daten in Datenbank - Aktualisiere nur neue Einträge (vermeide Duplikate) - Erstelle einen eigenen XML-Feed aus den DB-Daten --- ## Hinweise - Nutze immer Prepared Statements für SQL-Queries - Implementiere ordentliches Error Handling - Kommentiere deinen Code - Teste alle Edge Cases (leere Dateien, fehlerhafte Daten, etc.) Viel Erfolg! 🚀