Reputation: 135
I am trying to find a way to populate a form select with Go, the data I am trying to populate is taking from a MySQL table, I have already managed to create an array from the rows, I am now looking to populate a select form.
The goal is to be able to select a row from the drop down, to then send a query to delete the selected row from the table.
Below is the code:
HTML
{{if .Success}}
<h1>Your Vehicle has been successfully removed!</h1>
<div class="divFlex">
<button onclick="location.href = 'Add-Vehicle.html';" class="btn-block frgt_1 btn addV_btn" type="button" value="Add Another Vehicle">Add Vehicle<br>
</button>
<button onclick="location.href = 'Add-Vehicle.html';" class="btn-block frgt_1 btn addV_btn" type="button" value="Add Another Vehicle">Remove Vehicle</button>
</div>
{{else}}
<form action="/remove" method="POST" source="custom" name="form">
<input type="hidden" name="xss-token" value=""/>
<div class="form-group">
<div>
<label class="addV_label">Select Vehicle </label>
<select id="places" name="places">
{{range .}}
<option value="{{.Value}}" id="{{.Id}}" {{if .Selected}}selected{{end}}>{{.Text}}</option>
{{end}}
</select>
<select name="select" class="form-control loginInput2" required="required">
<option value="BMW">BMW</option>
</select>
</div>
</div>
<div>
<button class="btn-block frgt_1 btn addV_btn" type="submit" value="remove">REMOVE</button>
</div>
</form>
{{end}}
Main.go
func RemoveVehicle(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("Remove-Vehicle.html"))
db, err := sql.Open("mysql", "root:WgFl3f8218!@tcp(127.0.0.1:3306)/my_db")
if err != nil {
fmt.Println("Connection Failed.")
panic(err.Error())
}
defer db.Close()
// Query the DB
var car Vehicle
sqlStatement := `SELECT * FROM Vehicle`
rows, err := db.Query(sqlStatement)
if err != nil {
panic(err)
}
defer rows.Close()
var carSlice []Vehicle
for rows.Next() {
rows.Scan(&car.Id, &car.Date, &car.Brand, &car.Model, &car.Mileage, &car.Year, &car.rented, &car.Dayrate)
carSlice = append(carSlice, car)
}
fmt.Println(carSlice)
// insert, err := db.Query("INSERT INTO vehicle(id, date, brand, model, mileage, manufactured, rented, dayrate) VALUES ( ?, NOW(), ?, ?, ?, ?, 0, ?)", id.String(), brand_, model_, mileage_, year_, dayrate_)
// if err != nil {
// panic(err.Error())
// }
// defer insert.Close()
// tmpl.Execute(w, struct {
// Success bool
// Brand string
// Model string
// Year int64
// Mileage int64
// Dayrate int64
// }{true, brand_, model_, year_, mileage_, dayrate_})
}
Another issue I see is that the form method being POST, as I've seen a few examples in which the form method is GET.
I need to be able to populate select on page load, and then remove the matching option from the table.
Upvotes: 1
Views: 540
Reputation: 111
You can use both POST and GET method but they serve for different purposes.
Also you can check the link below to see how POST and GET requests are handled in Go server with built-in http package.
Upvotes: 1