Hi there,
I have the following code:
/// package main
import (
"database/sql"
"log"
"net/http"
"text/template"
_ "github.com/go-sql-driver/mysql"
)
type Kinderen struct {
nummer int
naam string
woonplaats string
leeftijd string
zakgeld string
kleedgeld string
totaal string
}
func dbConn() (db *sql.DB) {
dbDriver := "mysql"
dbUser := "root"
dbPass := "Studie01"
dbName := "zakgeld"
db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
if err != nil {
panic(err.Error())
}
return db
}
var tmpl = template.Must(template.ParseGlob("form/*"))
func Index(w http.ResponseWriter, r *http.Request) {
db := dbConn()
selDB, err := db.Query("SELECT * FROM Kinderen ORDER BY nummer DESC")
if err != nil {
panic(err.Error())
}
emp := Kinderen{}
res := []Kinderen{}
for selDB.Next() {
var nummer int
var naam, woonplaats, leeftijd, zakgeld, kleedgeld, totaal string
err = selDB.Scan(&nummer, &naam, &woonplaats, &leeftijd, &zakgeld, &kleedgeld, &totaal)
if err != nil {
panic(err.Error())
}
emp.nummer = nummer
emp.naam = naam
emp.woonplaats = woonplaats
emp.leeftijd = leeftijd
emp.zakgeld = zakgeld
emp.kleedgeld = kleedgeld
emp.totaal = totaal
res = append(res, emp)
}
tmpl.ExecuteTemplate(w, "Index", res)
defer db.Close()
}
func Show(w http.ResponseWriter, r *http.Request) {
db := dbConn()
nId := r.URL.Query().Get("nummer")
selDB, err := db.Query("SELECT * FROM Kinderen WHERE nummer=?", nId)
if err != nil {
panic(err.Error())
}
emp := Kinderen{}
res := []Kinderen{}
for selDB.Next() {
var naam, woonplaats string
var leeftijd, zakgeld, kleedgeld, totaal string
err = selDB.Scan(&naam, &woonplaats, &leeftijd, &zakgeld, &kleedgeld, &totaal)
if err != nil {
panic(err.Error())
}
emp.naam = naam
emp.woonplaats = woonplaats
emp.leeftijd = leeftijd
emp.zakgeld = zakgeld
emp.kleedgeld = kleedgeld
emp.totaal = totaal
res = append(res, emp)
tmpl.ExecuteTemplate(w, "Show", emp)
defer db.Close()
}
}
func New(w http.ResponseWriter, r *http.Request) {
tmpl.ExecuteTemplate(w, "New", nil)
}
func Edit(w http.ResponseWriter, r *http.Request) {
db := dbConn()
nId := r.URL.Query().Get("nummer")
selDB, err := db.Query("SELECT * FROM Kinderen WHERE nummer=?", nId)
if err != nil {
panic(err.Error())
}
emp := Kinderen{}
for selDB.Next() {
var nummer int
var naam, woonplaats, leeftijd, zakgeld, kleedgeld, totaal string
err = selDB.Scan(&nummer, &naam, &woonplaats, &leeftijd, &zakgeld, &kleedgeld, &totaal)
if err != nil {
panic(err.Error())
}
emp.nummer = nummer
emp.naam = naam
emp.woonplaats = woonplaats
emp.leeftijd = leeftijd
emp.zakgeld = zakgeld
emp.kleedgeld = kleedgeld
emp.totaal = totaal
}
tmpl.ExecuteTemplate(w, "Edit", emp)
defer db.Close()
}
func Insert(w http.ResponseWriter, r *http.Request) {
db := dbConn()
if r.Method == "POST" {
naam := r.FormValue("naam")
woonplaats := r.FormValue("woonplaats")
leeftijd := r.FormValue("leeftijd")
zakgeld := r.FormValue("zakgeld")
kleedgeld := r.FormValue("kleedgeld")
totaal := r.FormValue("totaal")
insForm, err := db.Prepare("INSERT INTO Kinderen(naam, woonplaats, leeftijd, zakgeld, kleedgeld, totaal) VALUES(?,?,?,?,?,?)")
if err != nil {
panic(err.Error())
}
insForm.Exec(naam, woonplaats, leeftijd, zakgeld, kleedgeld, totaal)
log.Println("INSERT: Naam: " + naam + " | woonplaats: " + woonplaats + " | leeftijd: " + leeftijd + " | zakgeld: " + zakgeld + " | kleedgeld:" + kleedgeld + " | totaal:" + totaal)
}
defer db.Close()
http.Redirect(w, r, "/", 301)
}
func Update(w http.ResponseWriter, r *http.Request) {
db := dbConn()
if r.Method == "POST" {
naam := r.FormValue("naam")
woonplaats := r.FormValue("woonplaats")
leeftijd := r.FormValue("leeftijd")
zakgeld := r.FormValue("zakgeld")
kleedgeld := r.FormValue("kleedgeld")
totaal := r.FormValue("totaal")
insForm, err := db.Prepare("UPDATE Kinderen SET naam=?, woonplaats=?, leeftijd=?, zakgeld=?, kleedgeld=?, totaal=? WHERE nummer=?")
if err != nil {
panic(err.Error())
}
insForm.Exec(naam, woonplaats, leeftijd, zakgeld, kleedgeld, totaal)
log.Println("UPDATE: Naam: " + naam + " | woonplaats: " + woonplaats + " | leeftijd: " + leeftijd + " | zakgeld: " + zakgeld + " | kleedgeld" + kleedgeld)
}
defer db.Close()
http.Redirect(w, r, "/", 301)
}
func Delete(w http.ResponseWriter, r *http.Request) {
db := dbConn()
emp := r.URL.Query().Get("nummer")
delForm, err := db.Prepare("DELETE FROM Kinderen WHERE nummer=?")
if err != nil {
panic(err.Error())
}
delForm.Exec(emp)
log.Println("DELETE")
defer db.Close()
http.Redirect(w, r, "/", 301)
}
func main() {
log.Println("Server started on: http://localhost:8080")
http.HandleFunc("/", Index)
http.HandleFunc("/show", Show)
http.HandleFunc("/new", New)
http.HandleFunc("/edit", Edit)
http.HandleFunc("/insert", Insert)
http.HandleFunc("/update", Update)
http.HandleFunc("/delete", Delete)
http.ListenAndServe(":8080", nil)
}
My output is nevertheless not as I want:
There is only a line in the first colum, although I have added informatin in the database in multiple colums.
Where does the code go wrong?