diff --git a/web/09/eignene_loesungen/Aufgabe_01_&_02.go b/web/09/eignene_loesungen/Aufgabe_01_&_02.go
new file mode 100644
index 0000000..dd9de22
--- /dev/null
+++ b/web/09/eignene_loesungen/Aufgabe_01_&_02.go
@@ -0,0 +1,120 @@
+package main
+
+import (
+ "database/sql"
+ "fmt"
+ "log"
+ "net/http"
+ "strconv"
+
+ _ "github.com/lib/pq"
+)
+
+var db *sql.DB
+
+type User struct {
+ Name string `json:"name"`
+ Hobbies string `json:"hobby"`
+ Alter int `json:"alter"`
+}
+
+func insertData(w http.ResponseWriter, r *http.Request) {
+ // Parse Formulardaten
+ err := r.ParseForm()
+ if err != nil {
+ log.Println("Fehler beim Parsen der Formulardaten: ", err)
+ http.Error(w, "Fehler beim Lesen der Formulardaten", http.StatusBadRequest)
+ return
+ }
+
+ name := r.FormValue("name")
+ hobby := r.FormValue("hobby")
+ alter, err := strconv.Atoi(r.FormValue("alter"))
+
+ if err != nil {
+ log.Println("Fehler beim konvertieren des Alters: ", err)
+ http.Error(w, "Fehler beim Einfügen in die Datenbank: "+err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ log.Printf("Füge ein: Name=%s, Hobbies=%s, Alter=%s\n", name, hobby, alter)
+
+ query := `INSERT INTO personen (name, hobbies, alter) VALUES ($1, $2, $3)`
+ _, err = db.Exec(query, name, hobby, alter)
+ if err != nil {
+ log.Println("Fehler beim einfügen: ", err)
+ http.Error(w, "Fehler beim Einfügen in die Datenbank: "+err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ log.Println("Daten erfolgreich eingefügt.")
+ w.Header().Set("Content-Type", "text/html; charset=utf-8")
+ w.WriteHeader(http.StatusOK)
+ fmt.Fprintf(w, "
✓ Daten erfolgreich eingefügt!
Zurück zum Formular")
+}
+
+func updateData(w http.ResponseWriter, r *http.Request) {
+ // Parse Formulardaten
+ err := r.ParseForm()
+ if err != nil {
+ log.Println("Fehler beim Parsen der Formulardaten: ", err)
+ http.Error(w, "Fehler beim Lesen der Formulardaten", http.StatusBadRequest)
+ return
+ }
+
+ name := r.FormValue("name")
+ hobby := r.FormValue("hobby")
+ alter, err := strconv.Atoi(r.FormValue("alter"))
+
+ if err != nil {
+ log.Println("Fehler beim konvertieren des Alters: ", err)
+ http.Error(w, "Fehler beim Einfügen in die Datenbank: "+err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ log.Printf("Aktualisiere: Name=%s, Hobbies=%s, Alter=%s\n", name, hobby, alter)
+
+ query := `UPDATE personen SET hobbies = $2, alter = $3 WHERE name = $1`
+ result, err := db.Exec(query, name, hobby, alter)
+ if err != nil {
+ log.Println("Fehler beim aktualisieren: ", err)
+ http.Error(w, "Fehler beim Aktualisieren: "+err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ rowsAffected, err := result.RowsAffected()
+ if err != nil {
+ log.Println("Fehler beim Abrufen der betroffenen Zeilen: ", err)
+ http.Error(w, "Fehler beim Abrufen der Änderungen", http.StatusInternalServerError)
+ return
+ }
+
+ log.Printf("Daten erfolgreich aktualisiert. Betroffene Zeilen: %d\n", rowsAffected)
+ w.Header().Set("Content-Type", "text/html; charset=utf-8")
+ w.WriteHeader(http.StatusOK)
+ fmt.Fprintf(w, "✓ Daten erfolgreich aktualisiert! (%d Zeilen)
Zurück zum Formular", rowsAffected)
+}
+
+func main() {
+ connStr := "user=devuser password=devpass dbname=devdb host=localhost port=5432 sslmode=disable"
+
+ var err error
+ db, err = sql.Open("postgres", connStr)
+ if err != nil {
+ log.Println("Fehler bein öffen der Verbindung:", err)
+ return
+ }
+ defer db.Close()
+
+ err = db.Ping()
+ if err != nil {
+ log.Println("Datenbank nicht erreichbar:", err)
+ return
+ }
+
+ log.Println("Datenbank Verbindung erfolgreich hergestellt!")
+
+ http.HandleFunc("/insert", insertData)
+ http.HandleFunc("/update", updateData)
+ http.ListenAndServe("localhost:8080", nil)
+}
diff --git a/web/09/eignene_loesungen/Aufgabe_03.html b/web/09/eignene_loesungen/Aufgabe_03.html
new file mode 100644
index 0000000..83acb5d
--- /dev/null
+++ b/web/09/eignene_loesungen/Aufgabe_03.html
@@ -0,0 +1,52 @@
+
+
+
+
+ Hobbies
+
+
+
+ Hobbies Einfügen:
+
+
+
+ Hobbies aktualisieren:
+
+
+
\ No newline at end of file