台灣最大程式設計社群網站
線上人數
642
 
會員總數:245406
討論主題:189192
歡迎您免費加入會員
討論區列表 >> PHP >> PHP + Oracle 分頁顯示
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
PHP + Oracle 分頁顯示
價值 : 20 QP  點閱數:1558 回應數:20

樓主

Leo
門外漢
0 20
920 61
發送站內信

近日在撰寫簡易的查詢頁面

下拉選擇輸入條件已可以正常將結果顯示在網頁上

但是筆數眾多

想要以分頁方式呈現

GOOGLE到下方的簡易範例
http://www.bear110.com/2013/06/php.html

但是不適用於Oracle資料庫

煩請各位協助

是否有相類似的改寫方式

謝謝 !




搜尋相關Tags的文章: [ Oracle ] , [ 分頁 ] ,
本篇文章發表於2016-03-07 08:34
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
為何會不適用呢??

你只要將mysql相關的指令。對應Oracle指令運行就行了。
在該範例中mysql相關也只是用了。mysql_query跟mysql_num_rows

將這兩個命令改成Oracle用的不會??

sql語法都是一樣的。
本篇文章回覆於2016-03-07 09:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

Daimom
捐贈 VP 給 Daimom 檢舉此回應
因 oracle裡面沒有limit的用法
請參考這篇:http://notes.antonyho.net/2012/02/oracleselect.html
修改sql語法
本篇文章回覆於2016-03-07 09:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

皮皮快跑
檢舉此回應
PDO Oracle
參考這個吧。
pdo本身支援幾乎大部份的資料庫系統。
現在都建議使用pdo了。
本篇文章回覆於2016-03-07 11:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
抱歉!!我錯了。

原來Oracle並沒有limit的語法@@"

我一直都以為mysql的語法在Oracle都可以用的。差別在Oracle一些比較特定的語法而已。

本篇文章回覆於2016-03-07 17:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Leo
檢舉此回應
我已經將網站的範例語法

調整成Oracle的語法

也可以正常顯示分頁

但是只有第一頁正常顯示

第二頁都是空白沒有結果

應該是超連結設定的問題

範例的例子是
[code]
// 顯示當前分頁鄰近的分頁頁數
for ($x = (($num_pages - $range) - 1); $x < (($num_pages + $range) + 1); $x++) {
// 如果這是一個正確的頁數...
if (($x > 0) && ($x <= $total_pages)) {
// 如果這一頁等於當前頁數...
if ($x == $num_pages) {
// 不使用連結, 但用高亮度顯示
echo " [<b>".$x."</b>] ";
// 如果這一頁不是當前頁數...
} else {
// 顯示連結
echo " <a href=?page=".$x.">".$x."</a> ";
} // end else
} // end if
} // end for
[/code]

但是我將分頁顯示語法還有查詢語法全都寫在一起

想說將紅字performance.php

改寫成{$_SERVER['PHP_SELF']}

但是還是沒辦法


小弟可能還是了解不深

還請各位協助解惑

謝謝 !
本篇文章回覆於2016-03-31 18:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Leo
檢舉此回應
上方回應標註的不是很清楚

我主要是要調整這一段

// 顯示連結
echo " <a href=performance.php?page=".$x.">".$x."</a> ";


我想說我的所有語法都寫在一起

所以將performance.php調整成{$_SERVER['PHP_SELF']}

但還是沒辦法正常顯示

不清楚是哪個地方需要調整

謝謝 !
本篇文章回覆於2016-03-31 18:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
如果第一頁正常,第二頁有問題,將sql的語法echo出來看。
看是不是少了什麼參數。
本篇文章回覆於2016-04-01 08:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
不錯的參考

彩虹
檢舉此回應
可以請您貼上完整的程式碼嗎(這一個頁面)~

「我已經將網站的範例語法,調整成Oracle的語法,也可以正常顯示分頁」意思是你調整成Oracle的語法之後,第二頁有正常顯示囉?
「但是只有第一頁正常顯示,第二頁都是空白沒有結果,應該是超連結設定的問題」如果上一個步驟是成功的,加上「$_SERVER['PHP_SELF']」照理說不會造成影響,不過真的沒必要加這個
「分頁顯示語法還有查詢語法全都寫在一起,但是還是沒辦法」請貼上完整的程式碼
「我主要是要調整這一段(echo " <a href=performance.php?page=".$x.">".$x."</a> ";)」你是怎麼確定是要調整這一段
「但還是沒辦法正常顯示」所以看起來不是調整這一段,對吧,請把SQL印出來看看
「不清楚是哪個地方需要調整」請貼上完整的程式碼,我們才知道到底是要調整哪裡


題外話:
我不知道為什麼你分頁要改成「$_SERVER['PHP_SELF']」或者「performance.php」呢
通常只要使用「?page」就好了,而且每一頁都可以通用,如下即可


本篇文章回覆於2016-04-01 09:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
基本上來講。不知道你的performance.php長的怎麼樣。
不清楚該程式是怎麼接值跟處理的。

這實在沒辦法知道你的問題在哪。

目前只可以知道你這樣的寫法是沒錯。它會傳值給當下的程式碼。
問題是你說的問題。在沒看到你的程式碼處理的情況。
實在不知道你的問題在哪了~~~~(無奈...)

你還是po比較完整的程式碼吧。至少也得將畢要的程式碼也給po出來。要不然怎麼知道你的問題在哪。
如真有這樣的保密性。那至少會輸出sql字串查看一下吧。
本篇文章回覆於2016-04-01 11:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Leo
檢舉此回應
感謝各位熱心協助!

以下是完整的程式碼(希望格式不會跑掉...)

我把範例中的performance.php保留

再麻煩各位協助解惑

謝謝!

本篇文章回覆於2016-04-01 16:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

彩虹
檢舉此回應
嗯,大概作者忘了改掉「performance.php」,所以你改成「{$_SERVER['PHP_SELF']}」是對的
但我可以更清楚的跟你說,你的SQL應該是有地方改錯(我沒使用過Oracle DB,所以不能直接幫你除錯)

另外你先不要著重在<a>頁數連結上
因為...你明明可以試著先把預設頁數手動改成別頁!
第31行

本篇文章回覆於2016-04-01 17:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
你要不要輸出第41行的 $sql_query_limit 看看

雖然我對Oracle的語法不了解。
不過這一段看了就知道很有問題了。(除非我又誤解了)

也就是說這一段如果是在第一頁的情況下。因該是會變成


看起來是沒什麼問題,但是第二頁的情況下就變成了

這看起來就很有問題了。
因為不管怎麼樣,r>30 AND r<30這樣的條件,永遠都不可能成立了吧。
也難怪你第二頁會沒任何資料了。你這是自已改過的還是copy的??
本篇文章回覆於2016-04-01 17:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
你這個問題,就算是copy人家的也好。也先去了解一下人家這段的意思吧。
在mysql下 limit a,b 其a值代表的是起啟記錄點。 b值是取出的數量。

但因為Oracle並沒這樣的語法情況下。只能用記錄數的方式來判斷。也就是說。
$pageRow_records這個值在第41行代表的是要結束的記錄點。並非是像我上面b值的「取出多少數量」的意思。
也就是區段式的 0-29 30-59 的方式才能做出分頁。
這堨申明一下。我並不確定其 select rownum 出來的值是從0開始還是從1開始。我的理解因該是要從0開始才對。
如果從1開始的話。給與的起始值跟結束點就要不一樣。(mysql是從0開始的)


程式碼我就不幫你改,那你自行去思考要怎麼改才對。不要只會copy而不知道如何變通。也不知道如何去應用。
這個問題,只要你對語法有了解。一眼就可以知道問題在哪。

只是貼貼補補的。也不知道這是幹什麼的。這會你會找bug找到吐血。

我不會Oracle。但用最基本的程式邏輯。一看就知道哪邊有問題了。
這不是會mysql也不是會Oracle的問題。而是基本觀念的問題而已。
本篇文章回覆於2016-04-01 17:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

Leo
檢舉此回應
感謝版主解惑!!!

可以跑了!!!!!

真的是LIMIT的問題!


我調整成這樣(末筆位置=預設筆數*page頁數)


謝謝各位的幫忙!!!

另外請問各位
$_SERVER['PHP_SELF']的作用
是因為PHP寫在一起呼叫自己的概念嗎?
本篇文章回覆於2016-04-01 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

彩虹
檢舉此回應
我就不多說了,其實你可以自己Google...

PHP 取得目前網址技巧分享(隨便ㄧ找都有介紹)
http://www.wibibi.com/info.php?tid=85
本篇文章回覆於2016-04-01 18:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.