首页 > 解决方案 > 如何在网页上的2个表中使用SQL请求数据

问题描述

我有 Go Web 服务器,它发出 SQL 请求并在 WEB 页面上显示结果。

这是围棋代码:

func PageHandler(w http.ResponseWriter, r *http.Request) { 
    rows, _ := database.Query("select  .......;")
    defer rows.Close()
    user_current := []User{}
    for rows.Next() {
        p := User{}
        err := rows.Scan(&p.Name1, &p.Name2 )
        if err != nil {
            fmt.Println(err)
            continue
        }
        user_current = append(user_current, p)
    }
    tmpl, _ := template.ParseFiles("page.html")
    tmpl.Execute(w, user_current)
}

这是我的 HTML 网页:

<table>
     <thead><th>name1</th><th>name2</th></thead>
            {{range . }}
            <tr>
                <td>{{.Name1}}</td>
                <td>{{.Name2}}</td>
            </tr>
            {{end}}
</table>

我想要网页中的 2 个或多个表格(表格中的数据不同),但我不知道该怎么做

像这样的东西:

<table1>
     <thead><th>name1</th><th>name2</th></thead>
            {{range . }}
            <tr>
                <td>{{.Name1}}</td>
                <td>{{.Name2}}</td>
            </tr>
            {{end}}
</table1>

<table2>
     <thead><th>sign1</th><th>sign2</th></thead>
            {{range . }}
            <tr>
                <td>{{.Sign1}}</td>
                <td>{{.Sign2}}</td>
            </tr>
            {{end}}
</table2>

标签: htmlgoweb

解决方案


func PageHandler(w http.ResponseWriter, r *http.Request) {
    var data struct {
        Users []User
        Animals []Animal
    }

    // select users
    rows, err := database.Query("select ... from user")
    if err != nil {
        log.Println(err)
        return
    }
    defer rows.Close()

    for rows.Next() {
        u := User{}
        if err := rows.Scan(&u.Field, ...); err != nil {
            log.Println(err)
            continue
        }
        data.Users = append(data.Users, p)
    }

    // select animals
    rows, err := database.Query("select ... from animal")
    if err != nil {
        log.Println(err)
        return
    }
    defer rows.Close()

    for rows.Next() {
        a := Animal{}
        if err := rows.Scan(&a.Field, ...); err != nil {
            log.Println(err)
            continue
        }
        data.Animals = append(data.Animals, p)
    }

    tmpl, err := template.ParseFiles("page.html")
    if err != nil {
        log.Println(err)
        return
    }
    if err := tmpl.Execute(w, data); err != nil {
        log.Println(err)
    }
}

模板

<table>
     <thead><th>name1</th><th>name2</th></thead>
            {{range .Users }}
            <tr>
                <td>{{.Name1}}</td>
                <td>{{.Name2}}</td>
            </tr>
            {{end}}
</table>

<table>
     <thead><th>sign1</th><th>sign2</th></thead>
            {{range .Animals }}
            <tr>
                <td>{{.Sign1}}</td>
                <td>{{.Sign2}}</td>
            </tr>
            {{end}}
</table>

推荐阅读