can search book
This commit is contained in:
parent
a7cd65c3f3
commit
4176572fef
@ -46,6 +46,84 @@
|
|||||||
<div class="panel-title">搜索图书</div>
|
<div class="panel-title">搜索图书</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
<form class="form-group" method="get">
|
||||||
|
<div class="container">
|
||||||
|
<select class="form-select col-3" name="bookattr" id="bookattr">
|
||||||
|
<!-- <option selected>书名</option>
|
||||||
|
<option>ISBN</option>
|
||||||
|
<option>作者</option>
|
||||||
|
<option>出版社</option>
|
||||||
|
<option>分类</option> -->
|
||||||
|
{% for opt in queryattr%}
|
||||||
|
{% if queryattr[opt]=="selected" %}
|
||||||
|
<option selected>{{opt}}</option>
|
||||||
|
{% else %}
|
||||||
|
<option>{{opt}}</option>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
{% if queryval%}
|
||||||
|
<input class="form-input form-inline col-8" name="bookname" id="bookname"
|
||||||
|
value="{{queryval}}">
|
||||||
|
{% else %}
|
||||||
|
<input class="form-input form-inline col-8" name="bookname" id="bookname">
|
||||||
|
{% endif %}
|
||||||
|
<input class="btn btn-primary input-group-btn form-inline" type="submit" value="搜索">
|
||||||
|
</div>
|
||||||
|
<!-- <div class="container">
|
||||||
|
<label class="form-label form-inline col-5" for="bookname"> 书名
|
||||||
|
<input class="form-input" name="bookname" id="bookname">
|
||||||
|
</label>
|
||||||
|
<label class="form-label form-inline col-2" for="author"> 作者
|
||||||
|
<input class="form-input" name="author" id="author">
|
||||||
|
</label>
|
||||||
|
<label class="form-label form-inline col-2" for="booktype"> 出版社
|
||||||
|
<input class="form-input" name="booktype" id="booktype">
|
||||||
|
</label>
|
||||||
|
<label class="form-label form-inline col-2" for="bookisbn"> 分类
|
||||||
|
<input class="form-input" name="bookisbn" id="bookisbn">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<input class="btn btn-primary input-group-btn p-centered" type="submit" value="搜索"> -->
|
||||||
|
</form>
|
||||||
|
<div id="search-result">
|
||||||
|
{% for book in queryresult%}
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-title h5">
|
||||||
|
<a href="/book/{{book['book_id']}}/">{{book['book_name']}}</a>
|
||||||
|
</div>
|
||||||
|
<div class="card-subtitle text-gray">
|
||||||
|
<span>作者: {{book['book_author']}}</span>
|
||||||
|
<span>语言: {{book['book_lang']}}</span>
|
||||||
|
<span>出版社: {{book['book_publisher']}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="card-body">
|
||||||
|
...
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
<button class="btn btn-primary">...</button>
|
||||||
|
</div> -->
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div id="pagination-wrapper" class="p-centered">
|
||||||
|
<ul class="pagination">
|
||||||
|
{% if page_first%}
|
||||||
|
<li class="page-item disabled">
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item">
|
||||||
|
{% endif %}
|
||||||
|
<a href="{{prev_page_link}}">上一页</a>
|
||||||
|
</li>
|
||||||
|
{% if page_last%}
|
||||||
|
<li class="page-item disabled">
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item">
|
||||||
|
{% endif %}
|
||||||
|
<a href="{{next_page_link}}">下一页</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-footer">
|
<div class="panel-footer">
|
||||||
|
|||||||
54
src/user.py
54
src/user.py
@ -70,7 +70,7 @@ def addbook():
|
|||||||
typeid = typeid['type_id']
|
typeid = typeid['type_id']
|
||||||
try:
|
try:
|
||||||
db.execute("insert into book_type values(?,?)",
|
db.execute("insert into book_type values(?,?)",
|
||||||
(bookid, typeid))
|
(typeid, bookid))
|
||||||
db.commit()
|
db.commit()
|
||||||
except sqlite3.Error as _e:
|
except sqlite3.Error as _e:
|
||||||
error = "未知错误: %s" % (_e)
|
error = "未知错误: %s" % (_e)
|
||||||
@ -136,3 +136,55 @@ def removetype():
|
|||||||
error = "删除(type_id=%s)完成" % tid_to_del
|
error = "删除(type_id=%s)完成" % tid_to_del
|
||||||
return render_template("user/result.html", opname="删除分类",
|
return render_template("user/result.html", opname="删除分类",
|
||||||
opresult=error, cur_time=datetime.datetime.now())
|
opresult=error, cur_time=datetime.datetime.now())
|
||||||
|
|
||||||
|
@bp.route("/search", methods=("GET", "POST"))
|
||||||
|
@login_required
|
||||||
|
def search():
|
||||||
|
attr_dict = {"书名":"book_name", "ISBN":"book_isbn",
|
||||||
|
"作者": "book_author", "出版社":"book_publisher", "分类": "specail1"}
|
||||||
|
db = get_db()
|
||||||
|
page = request.args.get('page')
|
||||||
|
page_lim = 10
|
||||||
|
page_off = 0
|
||||||
|
queryval = request.args.get('bookname')
|
||||||
|
bookattr = request.args.get('bookattr')
|
||||||
|
queryattr = None
|
||||||
|
error = None
|
||||||
|
if page is None or not page.isdecimal():
|
||||||
|
page = 1
|
||||||
|
|
||||||
|
page = int(page)
|
||||||
|
if page <= 0:
|
||||||
|
error = "无效的分页 %d" % page
|
||||||
|
else:
|
||||||
|
page_off = page_lim * (page - 1)
|
||||||
|
queryresult = []
|
||||||
|
if error is None:
|
||||||
|
if bookattr is not None and bookattr in attr_dict.keys():
|
||||||
|
queryattr = attr_dict[bookattr]
|
||||||
|
attr_dict[bookattr] = "selected"
|
||||||
|
else:
|
||||||
|
error = "不合法的查询条件: %s" % (bookattr)
|
||||||
|
attr_dict["书名"] = "selected"
|
||||||
|
bookattr=""
|
||||||
|
if error is None:
|
||||||
|
if queryval is None or len(queryval) == 0:
|
||||||
|
querystring = "select * from book where user_id=%d" % (g.user['user_id'])
|
||||||
|
queryval = ""
|
||||||
|
elif bookattr == "分类":
|
||||||
|
querystring = "SELECT * from book WHERE user_id=%d AND book_id IN (select book_id from book_type, typetable where type_name LIKE \'%%%s%%\')" % (g.user['user_id'], queryval)
|
||||||
|
else:
|
||||||
|
querystring = "select * from book where user_id=%d and %s like \'%%%s%%\'" % (g.user['user_id'], queryattr, queryval)
|
||||||
|
querystring += " limit %d offset %d" % (page_lim, page_off)
|
||||||
|
# print(querystring)
|
||||||
|
queryresult = db.execute(querystring).fetchall()
|
||||||
|
page_last = False
|
||||||
|
if len(queryresult) < page_lim:
|
||||||
|
page_last = True
|
||||||
|
next_page_link = "/search?bookname=%s&bookattr=%s&page=%d" %(queryval, bookattr, page + 1)
|
||||||
|
prev_page_link = "/search?bookname=%s&bookattr=%s&page=%d" %(queryval, bookattr, page - 1)
|
||||||
|
# print(prev_page_link, next_page_link)
|
||||||
|
return render_template("user/search.html",
|
||||||
|
cur_time=datetime.datetime.now(), error=error, queryresult=queryresult,
|
||||||
|
next_page_link=next_page_link, prev_page_link=prev_page_link,
|
||||||
|
page_last=page_last, page_first=(page==1), queryval=queryval, queryattr=attr_dict)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user