learning, task4/6
4 -> not working 5,6 -> not done yet
This commit is contained in:
131
lernen/ka-1-lbt3+4/README.MD
Normal file
131
lernen/ka-1-lbt3+4/README.MD
Normal file
@@ -0,0 +1,131 @@
|
||||
# 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)
|
||||
|
||||
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! 🚀
|
||||
Reference in New Issue
Block a user