Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Go r.FormValue is empty

I got an html form where I put values and insert them into the database. but when I insert them the values appear in the db like "".

This is how I insert the values:

title, author, description := r.Form("title"), r.FormValue("author"), r.FormValue("description")

    fmt.Println(title, author, description)

    rows, err := db.Query("INSERT INTO apps (title, author, description) VALUES ($1, $2, $3)",
        title, author, description)
    PanicIf(err)

    defer rows.Close()

    http.Redirect(w, r, "/myapps", http.StatusFound)

    db.Close()

Html :

<form action="/apps" method="POST">
    <div class="form-group">
        <label>Name</label>
        <input type="text" class="form-control" name="title" />
    </div>
    <div class="form-group">
        <label>Author</label>
        <input type="text" class="form-control" name="author" />
    </div>
    <div class="form-group">
        <label>Description</label>
        <input type="text" class="form-control" name="description" />
    </div>

    <input type="submit" value="Create" class="btn btn-success" />
    <a href="/myapps">
        <input type="button" value="Return" class="btn btn-primary" />
    </a>
</form>

There is maybe something wrong with the formvalues?

like image 964
Funereal Avatar asked Jul 13 '14 13:07

Funereal


1 Answers

You have to call r.ParseForm() first before you could use r.Form / r.PostForm.

From: http://golang.org/src/pkg/net/http/request.go#L168

// Form contains the parsed form data, including both the URL
// field's query parameters and the POST or PUT form data.
// This field is only available after ParseForm is called.
// The HTTP client ignores Form and uses Body instead.
Form url.Values

// PostForm contains the parsed form data from POST or PUT
// body parameters.
// This field is only available after ParseForm is called.
// The HTTP client ignores PostForm and uses Body instead.
PostForm url.Values
like image 51
OneOfOne Avatar answered Oct 23 '22 10:10

OneOfOne