payment gateway for rpn cn
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

163 lignes
3.4KB

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