2013-09-25 49 views
0

此問題從我最後一個問題開始。PHP Oracle分頁無法在下一頁中加載數據

我有使用ORACLE數據庫的jQuery表分頁。

這樣的代碼:

$cur_page = $page; 
$page -= 1; 
$per_page = 14; 
$previous_btn = true; 
$next_btn = true; 
$first_btn = true; 
$last_btn = true; 
$start = $page * $per_page; 

$query_pag_data = " 
SELECT * FROM 
(
    SELECT x.*, ROWNUM as r FROM 
    (
     SELECT P.PRODUCTION_STATUS, P.DATE_ADDED, P.FORM_NO, P.QTY_PLAN, ROWNUM, M.MODEL_NO, M.MODEL_NAME 
     FROM SEIAPPS_PRODUCTION_STATUS P, SEIAPPS_MODEL M 
     WHERE P.MODEL_NO = M.MODEL_NO 
     ORDER BY P.DATE_ADDED DESC, P.TIME 
    ) x 
) 
WHERE r >= $start AND r <= $per_page 
"; 

我每頁限制爲14列。 首頁的結果是OK,沒問題。但是當我嘗試打開下一頁時,它不會加載數據。而我在表格中有更多的20行數據。

請人幫忙。
謝謝。

回答

0

嘗試這樣,

SELECT * FROM 
(
    SELECT x.* FROM 
    (
     SELECT p.production_status, p.date_added, p.form_no, p.qty_plan, ROWNUM r, m.model_no, m.model_name 
     FROM seiapps_production_status p, seiapps_model m 
     WHERE p.model_no = m.model_no 
     ORDER BY p.date_added DESC, p.TIME 
    ) x 
) 
WHERE r >= $start AND r <= $per_page 
; 

如果你想獲得與頁碼和每頁的行的結果,用下面的方法試試。

CREATE OR REPLACE PROCEDURE pagination_proc(
      i_page_num IN NUMBER, 
      i_lines_per_page IN NUMBER, 
      o_result OUT sys_refcursor) 
AS 
    l_max_row NUMBER(4) := i_page_num * i_lines_per_page; 
    l_rec_count NUMBER(4); 
BEGIN 
    IF i_page_num = 1 THEN 

      SELECT count(*) 
      INTO l_rec_count 
      FROM seiapps_production_status p, seiapps_model m 
      WHERE p.model_no = m.model_no; 

    END IF; 

    IF l_rec_count > 0 OR i_page_num >1 THEN 
      OPEN o_result FOR 
      SELECT production_status, date_added, form_no, qty_plan, model_no, model_name 
      FROM 
      (
       SELECT production_status, date_added, form_no, qty_plan, model_no, model_name, ROWNUM rn 
       FROM 
       (
        SELECT p.production_status, p.date_added, p.form_no, p.qty_plan, m.model_no, m.model_name 
        FROM seiapps_production_status p, seiapps_model m 
        WHERE p.model_no = m.model_no 
       ) 
        WHERE ROWNUM <= l_max_row 
       ) 
      WHERE rn > l_max_row - i_lines_per_page; 
    END IF; 
END; 
+0

我試過,但是當打開下一頁時,數據顯示是從第一頁數據和只有一行加載...請指教。 –

+0

好的,如果你需要得到結果w.r.t每頁的頁碼和行數,那最好用程序來代替。 – Dba