payment gateway for rpn cn
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

149 Zeilen
3.0KB

  1. package main
  2. import (
  3. "database/sql"
  4. "log"
  5. "net/http"
  6. "text/template"
  7. )
  8. type Employee struct {
  9. Id int
  10. Name string
  11. City string
  12. }
  13. func dbConn() (db *sql.DB) {
  14. dbDriver := "mysql"
  15. dbUser := "sp"
  16. dbPass := "sp"
  17. dbName := "goblog"
  18. db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
  19. if err != nil {
  20. panic(err.Error())
  21. }
  22. return db
  23. }
  24. var tmpl = template.Must(template.ParseGlob("form/*"))
  25. func Index(w http.ResponseWriter, r *http.Request) {
  26. db := dbConn()
  27. selDB, err := db.Query("SELECT * FROM Employee ORDER BY id DESC")
  28. if err != nil {
  29. panic(err.Error())
  30. }
  31. emp := Employee{}
  32. res := []Employee{}
  33. for selDB.Next() {
  34. var id int
  35. var name, city string
  36. err = selDB.Scan(&id, &name, &city)
  37. if err != nil {
  38. panic(err.Error())
  39. }
  40. emp.Id = id
  41. emp.Name = name
  42. emp.City = city
  43. res = append(res, emp)
  44. }
  45. tmpl.ExecuteTemplate(w, "Index", res)
  46. defer db.Close()
  47. }
  48. func Show(w http.ResponseWriter, r *http.Request) {
  49. db := dbConn()
  50. nId := r.URL.Query().Get("id")
  51. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  52. if err != nil {
  53. panic(err.Error())
  54. }
  55. emp := Employee{}
  56. for selDB.Next() {
  57. var id int
  58. var name, city string
  59. err = selDB.Scan(&id, &name, &city)
  60. if err != nil {
  61. panic(err.Error())
  62. }
  63. emp.Id = id
  64. emp.Name = name
  65. emp.City = city
  66. }
  67. tmpl.ExecuteTemplate(w, "Show", emp)
  68. defer db.Close()
  69. }
  70. func New(w http.ResponseWriter, r *http.Request) {
  71. tmpl.ExecuteTemplate(w, "New", nil)
  72. }
  73. func Edit(w http.ResponseWriter, r *http.Request) {
  74. db := dbConn()
  75. nId := r.URL.Query().Get("id")
  76. selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
  77. if err != nil {
  78. panic(err.Error())
  79. }
  80. emp := Employee{}
  81. for selDB.Next() {
  82. var id int
  83. var name, city string
  84. err = selDB.Scan(&id, &name, &city)
  85. if err != nil {
  86. panic(err.Error())
  87. }
  88. emp.Id = id
  89. emp.Name = name
  90. emp.City = city
  91. }
  92. tmpl.ExecuteTemplate(w, "Edit", emp)
  93. defer db.Close()
  94. }
  95. func Insert(w http.ResponseWriter, r *http.Request) {
  96. db := dbConn()
  97. if r.Method == "POST" {
  98. name := r.FormValue("name")
  99. city := r.FormValue("city")
  100. insForm, err := db.Prepare("INSERT INTO Employee(name, city) VALUES(?,?)")
  101. if err != nil {
  102. panic(err.Error())
  103. }
  104. insForm.Exec(name, city)
  105. log.Println("INSERT: Name: " + name + " | City: " + city)
  106. }
  107. defer db.Close()
  108. http.Redirect(w, r, "/", 301)
  109. }
  110. func Update(w http.ResponseWriter, r *http.Request) {
  111. db := dbConn()
  112. if r.Method == "POST" {
  113. name := r.FormValue("name")
  114. city := r.FormValue("city")
  115. id := r.FormValue("uid")
  116. insForm, err := db.Prepare("UPDATE Employee SET name=?, city=? WHERE id=?")
  117. if err != nil {
  118. panic(err.Error())
  119. }
  120. insForm.Exec(name, city, id)
  121. log.Println("UPDATE: Name: " + name + " | City: " + city)
  122. }
  123. defer db.Close()
  124. http.Redirect(w, r, "/", 301)
  125. }
  126. func Delete(w http.ResponseWriter, r *http.Request) {
  127. db := dbConn()
  128. emp := r.URL.Query().Get("id")
  129. delForm, err := db.Prepare("DELETE FROM Employee WHERE id=?")
  130. if err != nil {
  131. panic(err.Error())
  132. }
  133. delForm.Exec(emp)
  134. log.Println("DELETE")
  135. defer db.Close()
  136. http.Redirect(w, r, "/", 301)
  137. }