can search book
This commit is contained in:
parent
a7cd65c3f3
commit
4176572fef
@ -46,6 +46,84 @@
|
||||
<div class="panel-title">搜索图书</div>
|
||||
</div>
|
||||
<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 class="panel-footer">
|
||||
|
||||
54
src/user.py
54
src/user.py
@ -70,7 +70,7 @@ def addbook():
|
||||
typeid = typeid['type_id']
|
||||
try:
|
||||
db.execute("insert into book_type values(?,?)",
|
||||
(bookid, typeid))
|
||||
(typeid, bookid))
|
||||
db.commit()
|
||||
except sqlite3.Error as _e:
|
||||
error = "未知错误: %s" % (_e)
|
||||
@ -136,3 +136,55 @@ def removetype():
|
||||
error = "删除(type_id=%s)完成" % tid_to_del
|
||||
return render_template("user/result.html", opname="删除分类",
|
||||
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