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:

+
+ Persönliche Angaben: + +
+ +
+ +
+ +
+ +

+

Hobbies aktualisieren:

+
+ Persönliche Angaben: + +
+ +
+ +
+ +
+ + \ No newline at end of file