Implemented Labor 09

main
Oliver Stolle 2026-06-02 21:17:31 +00:00
parent 051d7fad01
commit 06b7e711e3
2 changed files with 172 additions and 0 deletions

View File

@ -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, "<html><body><h2>✓ Daten erfolgreich eingefügt!</h2><a href='Aufgabe_03.html'>Zurück zum Formular</a></body></html>")
}
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, "<html><body><h2>✓ Daten erfolgreich aktualisiert! (%d Zeilen)</h2><a href='Aufgabe_03.html'>Zurück zum Formular</a></body></html>", 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)
}

View File

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Hobbies</title>
</head>
<body>
<h2>Hobbies Einfügen:</h2>
<form method="POST", action="http://localhost:8080/insert">
<legend>Persönliche Angaben:</legend>
<label>
Vor- und Nachanme:
<input type="text" name="name" required>
</label>
<br>
<label>
Hobbies:
<input type="text" name="hobby">
</label>
<br>
<label>
Alter:
<input type="number" name="alter" required>
</label>
<br>
<input type="submit" value="Jetzt Absenden">
</form>
<br><br>
<h2>Hobbies aktualisieren:</h2>
<form method="POST", action="http://localhost:8080/update">
<legend>Persönliche Angaben:</legend>
<label>
Vor- und Nachanme:
<input type="text" name="name" required>
</label>
<br>
<label>
Hobbies:
<input type="text" name="hobby">
</label>
<br>
<label>
Alter:
<input type="number" name="alter" required>
</label>
<br>
<input type="submit" value="Jetzt Absenden">
</form>
</body>
</html>