Wednesday, February 18, 2026

.::: Sample Access Database MariaDB via Backend Golang & Frontend using Lucee & PHP :::.

 


1. Sample for table pembelian

mkdir -p /opt/go-pembelian
cd /opt/go-pembelian

mkdir backend
cd backend

2. run mod & driver 

cd backend
go mod init pembelian-api
go get github.com/go-sql-driver/mysql

[root@teguhth-all go-pembelian]# cd backend
[root@teguhth-all backend]# go mod init pembelian-api
go: creating new go.mod: module pembelian-api
[root@teguhth-all backend]# ls
go.mod
[root@teguhth-all backend]# go get github.com/go-sql-driver/mysql
go: downloading github.com/go-sql-driver/mysql v1.9.3
go: downloading filippo.io/edwards25519 v1.1.0
go: added filippo.io/edwards25519 v1.1.0
go: added github.com/go-sql-driver/mysql v1.9.3

[root@teguhth-all backend]# pwd
/opt/go-pembelian/backend
[root@teguhth-all backend]# ls
go.mod  go.sum
[root@teguhth-all backend]#
 
3. run main_backupend.go

go run main_backupend.go 

[root@teguhth-all backend]# pwd
/opt/go-pembelian/backend
[root@teguhth-all backend]# ls -l
total 16
-rw-r--r-- 1 root root  140 Feb  9 16:13 go.mod
-rw-r--r-- 1 root root  344 Feb  9 16:13 go.sum
-rw-r--r-- 1 root root 1111 Feb  9 16:50 main_backupend.go
-rw-r--r-- 1 root root 1009 Feb  9 16:49 main_backupendori.go
[root@teguhth-all backend]#
[root@teguhth-all backend]# go run main_backupend.go
2026/02/18 15:30:23 Backend jalan di :8080
 


4. access 

### backend 

curl http://10.10.10.90:8080/pembelian

http://10.10.10.90:8080/pembelian

### frontend 
Daftar Pembelian Using Golang + php
http://10.10.10.90/indexgolang.html

Daftar Pembelian Using Golang + Lucee
http://10.10.10.90:8888/indexgolang.html

Daftar Pembelian Using Golang + Lucee noload
http://10.10.10.90:8888/indexgolang_noload.html

5. create backend golang 

curl http://10.10.10.90:8080/pembelian

http://10.10.10.90:8080/pembelian

[root@teguhth-all backend]# pwd
/opt/go-pembelian/backend
[root@teguhth-all backend]# cat main_backupend.go
package main

import (
        "database/sql"
        "encoding/json"
        "log"
        "net/http"

        _ "github.com/go-sql-driver/mysql"
)

type Pembelian struct {
        KP  string `json:"kp"`
        KB  string `json:"kb"`
        KC  string `json:"kc"`
        Tgl string `json:"tgl"`
        Jml string `json:"jml"`
}

var db *sql.DB

func main() {

        dsn := "admin:admin@tcp(10.10.10.90:3306)/teguhth"

        var err error
        db, err = sql.Open("mysql", dsn)
        if err != nil {
                log.Fatal(err)
        }

        http.HandleFunc("/pembelian", getPembelian)

        log.Println("Backend jalan di :8080")
        http.ListenAndServe(":8080", nil)
}

func getPembelian(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Content-Type", "application/json")

        rows, err := db.Query(`
SELECT
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
FROM pembelian`)

        if err != nil {
                w.Write([]byte(err.Error()))
                return
        }

        defer rows.Close()

        var list []Pembelian

        for rows.Next() {

                var p Pembelian

                rows.Scan(&p.KP, &p.KB, &p.KC, &p.Tgl, &p.Jml)

                list = append(list, p)
        }

        json.NewEncoder(w).Encode(list)
}

[root@teguhth-all backend]#
 


6. create frontend using php 


### frontend 
Daftar Pembelian Using Golang + php
http://10.10.10.90/indexgolang.html


[root@teguhth-all html]# pwd
/var/www/html
[root@teguhth-all html]# cat indexgolang.html
<!DOCTYPE html>
<html>
<head>
<title>Data Pembelian</title>
</head>

<body>

<h2>Daftar Pembelian Using Golang + php</h2>

<table border="1" id="tbl">
<tr>
<th>Kode Pembelian</th>
<th>Kode Barang</th>
<th>Kode Customer</th>
<th>Tanggal</th>
<th>Jumlah</th>
</tr>
</table>

<script>

fetch("http://10.10.10.90:8080/pembelian")
.then(r => r.json())
.then(data => {

let tbl = document.getElementById("tbl");

data.forEach(d => {

let row = tbl.insertRow();

row.insertCell().innerText = d.kp;
row.insertCell().innerText = d.kb;
row.insertCell().innerText = d.kc;
row.insertCell().innerText = d.tgl;
row.insertCell().innerText = d.jml;

});

});

</script>

</body>
</html>

[root@teguhth-all html]#

 


7. create frontend using lucee with load

### frontend 
Daftar Pembelian Using Golang + Lucee
http://10.10.10.90:8888/indexgolang.html

[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat indexgolang.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Data Pembelian (Go + Lucee)</title>

<style>
body {
    font-family: Arial;
    margin: 20px;
}

table {
    border-collapse: collapse;
    width: 100%;
}

th, td {
    border: 1px solid #444;
    padding: 8px;
    text-align: left;
}

th {
    background: #eee;
}
</style>

</head>

<body>

<h2>Daftar Pembelian Using Golang + Lucee</h2>

<button onclick="loadData()">Load Data</button>

<br><br>

<table id="tbl">
<tr>
<th>Kode Pembelian</th>
<th>Kode Barang</th>
<th>Kode Customer</th>
<th>Tanggal</th>
<th>Jumlah</th>
</tr>
</table>

<script>

async function loadData() {

try {

let res = await fetch("http://10.10.10.90:8080/pembelian");

if (!res.ok) throw new Error("API error");

let data = await res.json();

let tbl = document.getElementById("tbl");

tbl.innerHTML = `
<tr>
<th>Kode Pembelian</th>
<th>Kode Barang</th>
<th>Kode Customer</th>
<th>Tanggal</th>
<th>Jumlah</th>
</tr>`;

data.forEach(d => {

let row = tbl.insertRow();

row.insertCell().innerText = d.kp;
row.insertCell().innerText = d.kb;
row.insertCell().innerText = d.kc;
row.insertCell().innerText = d.tgl;
row.insertCell().innerText = d.jml;

});

} catch (err) {

alert("Gagal load data: " + err);

}

}

</script>

</body>
</html>

[root@teguhth-all ROOT]#

 


8. create frontend using lucee with no load

### frontend 
Daftar Pembelian Using Golang + Lucee noload
http://10.10.10.90:8888/indexgolang_noload.html

[root@teguhth-all ROOT]# pwd
/opt/lucee/tomcat/webapps/ROOT
[root@teguhth-all ROOT]#
[root@teguhth-all ROOT]# cat indexgolang_noload.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Data Pembelian (Go + Lucee)</title>

<style>
body {
    font-family: Arial;
    margin: 20px;
}

table {
    border-collapse: collapse;
    width: 100%;
}

th, td {
    border: 1px solid #444;
    padding: 8px;
    text-align: left;
}

th {
    background: #eee;
}
</style>

</head>

<body>

<h2>Daftar Pembelian Using Golang + Lucee noload</h2>

<table id="tbl">
<tr>
<th>Kode Pembelian</th>
<th>Kode Barang</th>
<th>Kode Customer</th>
<th>Tanggal</th>
<th>Jumlah</th>
</tr>
</table>

<script>

async function loadData() {

try {

let res = await fetch("http://10.10.10.90:8080/pembelian");

if (!res.ok) throw new Error("API error");

let data = await res.json();

let tbl = document.getElementById("tbl");

data.forEach(d => {

let row = tbl.insertRow();

row.insertCell().innerText = d.kp;
row.insertCell().innerText = d.kb;
row.insertCell().innerText = d.kc;
row.insertCell().innerText = d.tgl;
row.insertCell().innerText = d.jml;

});

} catch (err) {

alert("Gagal load data: " + err);

}

}

// AUTO LOAD saat halaman dibuka
window.onload = loadData;

</script>

</body>
</html>

[root@teguhth-all ROOT]#

 


 

No comments:

Post a Comment

Popular Posts