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.

149 lignes
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. }