I am trying to store the star rating from feedback section in webpage to database using golang.
In Home.html I have the html code written for star rating.
<div class="stars">
<form action="/feedback" method="POST">
<input class="star star-5" id="star_5" type="radio" value="5" name="star"/>
<label class="star star-5" for="star_5"></label>
<input class="star star-4" id="star_4" type="radio" value="4" name="star"/>
<label class="star star-4" for="star_4"></label>
<input class="star star-3" id="star_3" type="radio" value="3" name="star"/>
<label class="star star-3" for="star_3"></label>
<input class="star star-2" id="star_2" type="radio" value="2" name="star"/>
<label class="star star-2" for="star_2"></label>
<input class="star star-1" id="star_1" type="radio" value="1" name="star"/>
<label class="star star-1" for="star_1"></label>
<label for="isRate"><span></span></label>
</form>
</div>
And in main.go I have the functions written
var CDSID string
var Rating int
var CreateDate string
var rate int
func createUser(w http.ResponseWriter, r *http.Request) {
//stmt, err := db.Query("INSERT tbl_fdback SET CDSID='DDUTTA3', CreateDate=getdate(), Rating=?")
stmt :="INSERT INTO tbl_fdback VALUES($1,$2,$3)"
if err != nil {
log.Fatal("there was an error:", err.Error())
return
}
isRate := r.FormValue("star")
if (isRate == "one") {
rate = 1
}else if (isRate == "two"){
rate = 2
}else if (isRate == "three") {
rate = 3
}else if (isRate == "four") {
rate = 4
}else if (isRate == "five") {
rate = 5
}else {
fmt.Println("Work harder")
}
_, err := db.Exec(stmt,"DDUTTA3",CreateDate,rate)
if err != nil {
log.Println(err)
return
}
}
func main() {
flag.Parse()
dsn := "server=fcdb1198;user id=prxqamydb;password=dbnms#666"
db, err := sql.Open("mssql", dsn)
if err != nil {
fmt.Println("Cannot connect: ", err.Error())
return
}
err = db.Ping()
if err != nil {
fmt.Println("Cannot connect1: ", err.Error())
return
}
defer db.Close()
http.HandleFunc("/feedback", createUser)
http.HandleFunc(STATIC_URL, StaticHandler)
if err := http.ListenAndServe("localhost:8080", nil); err != nil {
log.Fatalf("Error starting HTTP server: %v", err)
}
}
</div>
If I get right your star rating values are string eg.: "1", "2"..."5"(not "one", "two"..etc due to input class="star star-5" id="star_5" type="radio" value="5"
), so you need to convert your isRate
value:
rate, _ := strconv.Atoi(isRate)
and get the int value in rate
to pass in the SQL statement.