举个例子 我在后台写了这么个办法 获取数据库的值
我的问题就是 这个是个列表可能有几百几千条数据我需要嵌套到HTML中,如何将获取的数据嵌套HTML的呢
最好有个例子给我学习学习
~~~
rows, err := mysql.DB.Query("select uid,pass from user_list where user ='root123'")
defer rows.Close()
if err != nil {
fmt.Fprintln(w, err)
}
for rows.Next() {
var uid int
var pass string
err = rows.Scan(&uid, &pass)
if err != nil {
fmt.Fprintln(w, err)
}
fmt.Fprintln(w, uid)
fmt.Fprintln(w, pass)
}
~~~
`首先本人新手,有写的不好的地方,请尽快指出,以便于让我强大,谢谢。`
目录结构
```
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
更多评论