上一篇讲了查询图书并且分页,那是在图书管理那里,那么我们接着讲图书的管理。
完成后项目结构
![](https://img-blog.csdnimg.cn/8c121e02305e444cb344f8d3f6cadc46.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aeL5qKm55qE5bCR5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)
实现的功能如下:
1、删除图书
在bookhandler.go新加一个函数
//DeleteBook 删除图书
func DeleteBook(w http.ResponseWriter, r *http.Request) {
//获取要删除的图书的id
bookID := r.FormValue("bookId")
//调用bookdao中删除图书的函数
dao.DeleteBook(bookID)
//调用GetBooks处理器函数再次查询一次数据库
GetPageBooks(w, r)
}
代码的最后一行,在删除完一本图书之后,我们再调用上一篇讲的分页函数,这样重新显示该页面
在bookdao.go里新增删除图书DeleteBook()函数
//DeleteBook 根据图书的id从数据库中删除一本图书
func DeleteBook(bookID string) error {
//写sql语句
sqlStr := "delete from books where id = ?"
//执行
_, err := utils.Db.Exec(sqlStr, bookID)
if err != nil {
return err
}
return nil
}
也是非常的简单,调用sql语句就可以
2、更新图书
我们有专门更新图书的页面如下
只要在“修改”这个超链接,加上我们要用的信息
<td><a href="/toUpdateBookPage?bookId={
{.ID}}">修改</a></td>
“/toUpdateBookPage?bookId={ {.ID}}”
1、需要在main中加入/toUpdateBookPage的路由,再进入控制器处理
2、?bookId={ {.ID}就是我们要获得的有用的信息了
我们可以根据book.ID来从数据库获得book对象,然后更新图书信息之后,可以重新写入数据库
//去更新图书的页面
http.HandleFunc("/toUpdateBookPage", controller.ToUpdateBookPage)
之后再bookcontroller里的函数就可以这么写了,跳转到book_edit.html
//ToUpdateBookPage 去更新或者添加图书的页面
func ToUpdateBookPage(w http.ResponseWriter, r *http.Request) {
//获取要更新的图书的id
bookID := r.FormValue("bookId")
//调用bookdao中获取图书的函数
book, _ := dao.GetBookByID(bookID)
if book.ID > 0 {
//在更新图书
//解析模板
t := template.Must(template.ParseFiles("views/pages/manager/book_edit.html"))
//执行
t.Execute(w, book)
} else {
//在添加图书
//解析模板
t := template.Must(template.ParseFiles("views/pages/manager/book_edit.html"))
//执行
t.Execute(w, "")