router.get("/:page",function(req,res){ if(req.params.page == 0){ res.send("<div style='font-size:16px;font-weight:bold;color:red'>404</div>"); } conn.query("select * from news_base",function(err,pdata){ conn.query("select * from news_base limit "+(req.params.page-1)*3+",3",function(err,data){ res.render("admin/list",{datas : pdata,pageDatas : data}); }); });});select * from news_base limit 這條sql是根據頁數獲取具體的數據??墒窃谇芭_頁面 我要做一個翻頁的 “上一頁 1.2.3.4.5 下一頁”的效果,那就要知道數據的總和才能計算。但是 select * from news_base limit 這個sql獲取不到數據的總和數。所以只好再寫一條sql “select * from news_base ” 這個就可以返回一個數組。然后通過length就可以拿到總數值來計算。但是兩條sql感覺很多余一樣。。感覺代碼很臃腫。。還有沒有更好的方法來實現翻頁的效果。前臺用的是ejs模板引擎。
5 回答

ibeautiful
TA貢獻1993條經驗 獲得超6個贊
總數得占用一條sql,用select count(*) from news_base 獲取總數吧。
表明上兩次SELECT實際只查詢一次的方法
SELECT SQL_CALC_FOUND_ROWS * FROM apps limit 2,6;
SELECT FOUND_ROWS();//在得到數據后,通過FOUND_ROWS()可以得到不帶LIMIT的結果數:
但是SQL_CALC_FOUND_ROWS在速度上會比COUNT(*)慢~

DIEA
TA貢獻1820條經驗 獲得超2個贊
可以首次進入頁面時候發出兩個請求:一個請求總數量,一個請求limit行。
總數量記錄在頁面中。
之后翻頁的話只發第二個請求即可。
只需要總數量的情況也是存在的,應該考慮單獨開發這個接口。
添加回答
舉報
0/150
提交
取消