forked from WEB-IB-SS26/development-ib
Implemented Labor 09
parent
051d7fad01
commit
06b7e711e3
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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>
|
||||
Loading…
Reference in New Issue