diff --git a/web/09/09_loesungen/Arrow/arrow.js b/web/09/09_loesungen/Arrow/arrow.js new file mode 100644 index 0000000..c03309b --- /dev/null +++ b/web/09/09_loesungen/Arrow/arrow.js @@ -0,0 +1,20 @@ + +// Produktarray +const produkte = [ + { produkt: "Joghurt", preis: 2.49 }, + { produkt: "Brot", preis: 3.29 }, + { produkt: "Käse", preis: 8.99 }, + { produkt: "Duschgel", preis: 2.79 } +]; + +// neues Array + +const rabattProdukte = produkte.map(p => { + return { + produkt: p.produkt, + preis: (p.preis * 0.9).toFixed(2) // Preis um 10% reduziert und gerundet + }; +}); + +// Ausgabe +console.log(rabattProdukte); \ No newline at end of file diff --git a/web/09/09_loesungen/Aufgabe_1und2/go.mod b/web/09/09_loesungen/Aufgabe_1und2/go.mod new file mode 100644 index 0000000..32cf764 --- /dev/null +++ b/web/09/09_loesungen/Aufgabe_1und2/go.mod @@ -0,0 +1,5 @@ +module db_insert + +go 1.24.5 + +require github.com/lib/pq v1.10.9 diff --git a/web/09/09_loesungen/Aufgabe_1und2/go.sum b/web/09/09_loesungen/Aufgabe_1und2/go.sum new file mode 100644 index 0000000..aeddeae --- /dev/null +++ b/web/09/09_loesungen/Aufgabe_1und2/go.sum @@ -0,0 +1,2 @@ +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= diff --git a/web/09/09_loesungen/Aufgabe_1und2/main.go b/web/09/09_loesungen/Aufgabe_1und2/main.go new file mode 100644 index 0000000..92d8ac4 --- /dev/null +++ b/web/09/09_loesungen/Aufgabe_1und2/main.go @@ -0,0 +1,166 @@ +package main + +import ( + "database/sql" + "fmt" + "log" + "net/http" + "strings" + + _ "github.com/lib/pq" +) + +// INSERT + +type insertHandler int + +func (ihandler insertHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + // auf Post prüfen + if r.Method != http.MethodPost { + http.Error(w, "Nur Post ist erlaubt", http.StatusMethodNotAllowed) + return + } + + //Formulardaten einlesen + err := r.ParseForm() + if err != nil { + http.Error(w, "gesendetes Formular ungültig", http.StatusBadRequest) + return + } + + name := r.FormValue("name") + alter := r.FormValue("alter") + hobbies := r.Form["hobby"] + + // alter und name sollten vorhanden sein + + if name == "" { + http.Error(w, "Name fehlt", http.StatusBadRequest) + return + } + + if alter == "" { + http.Error(w, "Alter fehlt", http.StatusBadRequest) + return + } + + // Hobbies mit Komma separiert zusammenfügen + alleHobbies := strings.Join(hobbies, ", ") + + //DB Verbindung öffnen + connStr := "user=devuser password=devpass dbname=devdb host=localhost port=5432 sslmode=disable" + + db, err := sql.Open("postgres", connStr) + if err != nil { + log.Println("Datenbank nicht erreichbar", err) + http.Error(w, "Server Fehler", http.StatusInternalServerError) + return + } + + defer db.Close() + + //Verbindung testen + err = db.Ping() + if err != nil { + log.Println("Datenbank nicht erreichbar", err) + http.Error(w, "Interner Server Error", http.StatusInternalServerError) + return + } + log.Println("Verbindung erfolgreich hergestellt") + + //Insert + + query := `INSERT INTO personen (name, hobbies, alter) VALUES ($1, $2, $3)` + _, err = db.Exec(query, name, alleHobbies, alter) + if err != nil { + log.Println("Fehler beim Einfügen der Daten", err) + http.Error(w, "Interner Server Fehler", http.StatusInternalServerError) + return + } + + fmt.Fprintln(w, "Datensatz erfolgreich eingefügt") + +} + +// UPDATE + +type updateHandler int + +func (uhandler updateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + // nur POST erlauben + if r.Method != http.MethodPost { + http.Error(w, "Nur Post ist erlaubt", http.StatusMethodNotAllowed) + return + } + + // Formulardaten einlesen + err := r.ParseForm() + if err != nil { + http.Error(w, "gesendetes Formular ungültig", http.StatusBadRequest) + return + } + + name := r.FormValue("name") + alter := r.FormValue("alter") + hobbies := r.Form["hobby"] + + if name == "" { + http.Error(w, "Name fehlt", http.StatusBadRequest) + return + } + + if alter == "" { + http.Error(w, "Alter fehlt", http.StatusBadRequest) + return + } + + // Hobbies zusammenfügen + alleHobbies := strings.Join(hobbies, ", ") + + // DB-Verbindung + connStr := "user=devuser dbname=devdb host=localhost port=5432 sslmode=disable" + db, err := sql.Open("postgres", connStr) + if err != nil { + log.Println("Datenbank nicht erreichbar", err) + http.Error(w, "Server Fehler", http.StatusInternalServerError) + return + } + defer db.Close() + + err = db.Ping() + if err != nil { + log.Println("Datenbank nicht erreichbar", err) + http.Error(w, "Interner Server Fehler", http.StatusInternalServerError) + return + } + + // Update-Query + query := `UPDATE personen SET hobbies = $1, alter = $2 WHERE name = $3` + res, err := db.Exec(query, alleHobbies, alter, name) + if err != nil { + log.Println("Fehler beim Update", err) + http.Error(w, "Interner Server Fehler", http.StatusInternalServerError) + return + } + + rowsAffected, _ := res.RowsAffected() + if rowsAffected == 0 { + http.Error(w, "Kein Datensatz mit diesem Namen gefunden", http.StatusNotFound) + return + } + + fmt.Fprintln(w, "Datensatz erfolgreich aktualisiert") +} + +func main() { + + var ihandler insertHandler + var uhandler updateHandler + + http.Handle("/insert", ihandler) // Insert-Endpunkt + http.Handle("/update", uhandler) // Update-Endpunkt + + log.Println("Server startet auf http://localhost:8080") + log.Fatal(http.ListenAndServe("localhost:8080", nil)) + +} diff --git a/web/09/09_loesungen/JS_Grundlagen/grundlagen.js b/web/09/09_loesungen/JS_Grundlagen/grundlagen.js new file mode 100644 index 0000000..f09273a --- /dev/null +++ b/web/09/09_loesungen/JS_Grundlagen/grundlagen.js @@ -0,0 +1,9 @@ +const zahlen = [38, 0, 226, 384, 111, 500383]; + +for (let i = 0; i < zahlen.length; i++){ + if (zahlen[i] === 0){ + console.log("Null"); + } else { + console.log(zahlen[i] % 2 === 0 ? "Gerade Zahl" : "Ungerade Zahl") + } +} diff --git a/web/own_web/Anamese/Anamese.html b/web/own_web/Anamese/Anamese.html new file mode 100644 index 0000000..9e26db2 --- /dev/null +++ b/web/own_web/Anamese/Anamese.html @@ -0,0 +1,37 @@ + + +
+ +