查出sql列表值 嵌套的HTML中问题

hellsam · · 867 次点击
`首先本人新手,有写的不好的地方,请尽快指出,以便于让我强大,谢谢。` 目录结构 ``` web/ main.go view/ index.html ``` main.go ``` package main import ( "net/http" "database/sql" _ "github.com/go-sql-driver/mysql" // 包与你的不一样 "log" "html/template" ) func main() { http.HandleFunc("/", table) http.ListenAndServe(":8080", nil) } // 定义查询的数据结构体 type User struct { Id int64 Name string Age int Addr string } // table // 展示列表 func table(w http.ResponseWriter, r *http.Request) { defer r.Body.Close() // 连接数据库 db, err := sql.Open("mysql", "root:root@/test?charset=utf8") if err != nil { log.Fatal(err) return } // 查询所有内容 sql := "SELECT id, name, age, addr FROM test" rows, err := db.Query(sql) if err != nil { log.Fatal(err) return } // 切片数据 data := make([]*User, 0) for rows.Next() { // 创建一个结构体 类似model user := &User{} // 将数据分别扫描进去 if err := rows.Scan(&user.Id, &user.Name, &user.Age, &user.Addr); err != nil { log.Fatal(err) return } // fmt.Println(user) // 将结果插入切片中 data = append(data, user) } //fmt.Println(data) // 传递到模板中 // 如果确认自己的路径正确的前提下,出现没有找到指定的模板文件的时候 // 记得在命令行执行 go run main.go tpl, err := template.ParseFiles("view/index.html") if err != nil { log.Fatal(err) return } tpl.Execute(w, data) } ``` index.html ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Table</title> <!-- 引入bootstrap --> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <style> .main { margin: 50px 0; } .table { border: 1px solid #e8e8e8; } </style> </head> <body> <div class="row main"> <div class="col-sm-offset-3 col-sm-6"> <table class="table"> <thead> <tr> <th>序号</th> <th>ID</th> <th>名称</th> <th>年龄</th> <th>地址</th> </tr> </thead> <tbody> <!-- 遍历 这个.就代表了那个data --> {{range $k, $v := .}} <tr> <!-- 这里的k 还有点瑕疵 + 1失败了 --> <th scope="row">{{$k}}</th> <td>{{$v.Id}}</td> <td>{{$v.Name}}</td> <td>{{$v.Age}}</td> <td>@{{$v.Addr}}</td> </tr> {{end}} </tbody> </table> </div> </div> </body> </html> ``` sql ``` CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` tinyint(3) unsigned NOT NULL, `addr` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 INSERT INTO `test` (`id`, `name`, `age`, `addr`) VALUES (1, '张三', 22, '北京市朝阳区'), (2, '李四', 25, '天津市滨海新区'); ```
#4
更多评论
分页,采用html/template,{{.}}的遍历。是这个意思么?
#1
补充,可以讲查询结果放在切片里,然后传到页面上。
#2