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

hellsam · 2017-10-12 13:13:25 · 947 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-10-12 13:13:25 的主题,其中的信息可能已经有所发展或是发生改变。

举个例子 我在后台写了这么个办法 获取数据库的值 我的问题就是 这个是个列表可能有几百几千条数据我需要嵌套到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)
    }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

947 次点击  
加入收藏 微博
8 回复  |  直到 2017-10-14 12:51:08
stu2162583
stu2162583 · #1 · 7年之前

分页,采用html/template,{{.}}的遍历。是这个意思么?

stu2162583
stu2162583 · #2 · 7年之前
stu2162583stu2162583 #1 回复

分页,采用html/template,{{.}}的遍历。是这个意思么?

补充,可以讲查询结果放在切片里,然后传到页面上。

hellsam
hellsam · #3 · 7年之前

@stu2162583 对的 就是放到HTML的 table列表里 +分页 这个是网站最常用的

就是吧数据库的值 取出来 嵌套到HTML TABLE里 分页

有什么例子吗 本人刚学GO 不太了解 嵌套HTML里

stu2162583
stu2162583 · #4 · 7年之前

首先本人新手,有写的不好的地方,请尽快指出,以便于让我强大,谢谢。

目录结构

    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




    
    Table
    
    
    


{{range $k, $v := .}} {{end}}
序号 ID 名称 年龄 地址
{{$k}} {{$v.Id}} {{$v.Name}} {{$v.Age}} @{{$v.Addr}}

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, '天津市滨海新区');
hellsam
hellsam · #5 · 7年之前

@stu2162583 感谢大师给了例子 瞬间知道了原理了,代码清晰漂亮, 大牛有分页演示代码吗?

stu2162583
stu2162583 · #6 · 7年之前
hellsamhellsam #5 回复

@stu2162583 感谢大师给了例子 瞬间知道了原理了,代码清晰漂亮, 大牛有分页演示代码吗?

昨天发现没写分页,想补充修改分页代码来着,可是不能编辑回复,就放弃了,咱论坛有很多大神分页代码,可以搜索下,结合一下估计就行。

czxichen
czxichen · #7 · 7年之前

我感觉还是用,dataTable比较方便些生成json返回给前端,而不用去去处理静态也面,灵活

hellsam
hellsam · #8 · 7年之前

@stu2162583 额 有现成分页代码? 有的话 发一份给我们新人看看啊 分页 + TABLE输出 这是网站必备的 用途最大的地方了,其他都是一些 GET POST 增删改查了

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传