Shembull: Faqe dinamike, të dhënat nga databaza në template

package main

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
    "html/template"
    "log"
    "net/http"
)

type Libri struct {
    ID      int    `json:"id"`         // Emertimi i fushes ne tabele
    Titulli string `json:"book_title"` // Emertimi i fushes ne tabele
}

func main() {
    http.HandleFunc("/books/", viewH)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

func viewH(w http.ResponseWriter, r *http.Request) {
    db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/markdown")
    defer db.Close()
    if err != nil {
        log.Fatal(err)
    }

    results, err := db.Query("SELECT id, book_title FROM books ORDER by id")
    if err != nil {
        panic(err.Error())
    }

    var lista []Libri
    var libri Libri

    for results.Next() {
        err = results.Scan(&libri.ID, &libri.Titulli)
        if err != nil {
            panic(err.Error())
        }
        lista = append(lista, Libri{ID: libri.ID, Titulli: libri.Titulli})

    }

    var templates = template.Must(template.ParseFiles("page.html"))

    err = templates.ExecuteTemplate(w, "page.html", lista)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }
}

https://play.golang.org/p/AVJ8l65uLpm

page.html

<!DOCTYPE html>
<head>

</head>

<body>
<table>
    {{range .}}
        <tr>
            <td>{{ .ID}}</td>
            <td>{{.Titulli}}</td>
        </tr>
    {{end}}
</table>
</body>
</html>

Rezultati (në browser):

1    Go për fillestarë
2    PHP dhe MySQL për fillestarë
3    Laravel për fillestarë
4    Bazat e Ueb dizajnit

Sqarim:

root:@tcp(127.0.0.1:3306)/markdown

Username është root, nuk ka password (pas dypikëshit), TCP protokol, hosti lokal 127.0.0.1, porti i MySQL 3306 emri i databazës është “markdown”

All Rights Reserved Theme by 404 THEME.