Golang網站中使用模板顯示mysql表

go的main腳本

package main

import (
	"database/sql"
	"fmt"
	"html/template"
	"net/http"

	_ "github.com/go-sql-driver/mysql"
)

type Employee struct {
	Fname, Sname, Dname, Email string
}

func dbConnect() (db *sql.DB) {
	dbDriver := "mysql"
	dbuser := "root"
	dbPass := "123456"
	dbHost := "172.20.4.92"
	dbPort := "3306"
	dbName := "goinfo"

	db, err := sql.Open(dbDriver, dbuser+":"+dbPass+"@tcp("+dbHost+":"+dbPort+")/"+dbName+"?charset=utf8")
	//db,err := sql.Open(dbDriver, dbUser +":"+ dbPass +"@tcp("+ dbHost +":"+ dbPort +")/"+ dbName +"?charset=utf8")
	checkErr(err)
	return db
}
func dbSelect() []Employee {
	db := dbConnect()
	rows, err := db.Query("select first_name,last_name,department,email from employees")
	checkErr(err)
	emp := Employee{}
	empdict := []Employee{}

	for rows.Next() {
		var first_name, last_name, department, email string
		err := rows.Scan(&first_name, &last_name, &department, &email)
		checkErr(err)

		emp.Fname = first_name
		emp.Sname = last_name
		emp.Dname = department
		emp.Email = email
		empdict = append(empdict, emp)
	}
	defer db.Close()
	return empdict
}

func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}
func dbTable(w http.ResponseWriter, r *http.Request) {
	table := dbSelect()
	for i := range table {
		tmp := table[i]
		fmt.Fprintf(w, "YESS|%12s|%12s|%12s|%20s|\n", tmp.Fname, tmp.Sname, tmp.Dname, tmp.Email)
	}
}

func dbTableHtml(w http.ResponseWriter, r *http.Request) {
	Tables := dbSelect()
	tmpl := template.Must(template.ParseFiles("list.html"))
	//tmpl.ExecuteTemplate(w, "Index", struct {
	//	Tasks []Employee
	//}{Tables})
	tmpl.ExecuteTemplate(w, "Index", Tables)
}

func main() {
	server := http.Server{
		Addr: ":8080",
	}
	http.HandleFunc("/test", dbTable)
	http.HandleFunc("/list", dbTableHtml)
	server.ListenAndServe()

}

list.html

{{ define "Index" }}
<html>
    <head>
        <meta content="html/text" charset="utf-8"> 
        <title> Check LIST </title>
    </head>
    <body>
        <h1> Mysql tables list </h1>

        <table border="1">
            <tr>
              <td>FirstName</td>
              <td>SecondName</td>
              <td>Department</td>
              <td>Email</td>
            </tr>
      
            {{ range . }}
            <tr>              
              <td> {{ .Fname }}</td>
              <td> {{ .Sname }}</td>
              <td> {{ .Dname }}</td>
              <td> {{ .Email }}</td>
            </tr>
            {{ end }}
        </table>

    </body>
</html>

{{ end }}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章