PHP 分頁 MySQL
/*
* Created on 2013-7-30
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
$page = $_get[page];
if(!function_exists(pageft)){
function pageft($totle,$displaypg=20,$url=''){
//定義幾個全域變數:
//$page:當前頁碼;
//$firstcount:(資料庫教程)查詢的起始項;
//$pagenav:頁面導航條代碼,函數內部並沒有將它輸出;
//$_server:讀取本頁url"$_server["request_uri"]"所必須。
global $page,$firstcount,$pagenav,$_server;
$globals["displaypg"]=$displaypg;
if(!$page) $page=1;
//如果$url使用預設,即空值,則賦值為本頁url:
if(!$url){ $url=$_server["request_uri"];}
//url分析:
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //單獨取出url的查詢字串
if($url_query){
$url_query=preg_replace("/(^|&)page=$page/","",$url_query);
//將處理後的url的查詢字串替換原來的url的查詢字串:
$url=str_replace($parse_url["query"],$url_query,$url);
//在url後加page查詢資訊,但待賦值:
if($url_query) $url.="&page"; else $url.="page";
}else {
$url.="?page";
}
//頁碼計算:
$lastpg=ceil($totle/$displaypg); //最後頁,也是總頁數
$page=min($lastpg,$page);
$prepg=$page-1; //上一頁
$nextpg=($page==$lastpg ? 0 : $page+1); //下一頁
$firstcount=($page-1)*$displaypg;
//開始分頁導航條代碼:
$pagenav="顯示第
".($totle?($firstcount+1):0)."-
".min($firstcount+$displaypg,$totle)." 條記錄,共 $totle 條記錄";
//如果只有一頁則跳出函數:
if($lastpg<=1) return false;
$pagenav.=" 首頁 ";
if($prepg)
$pagenav.=" 前頁 ";
else $pagenav.=" 前頁 ";
if($nextpg)
$pagenav.=" 後頁 ";
else $pagenav.=" 後頁 ";
$pagenav.=" 尾頁 ";
//下拉捷徑清單,迴圈列出所有頁碼:
$pagenav.=" 到第 \n"; for($i=1;$i<=$lastpg;$i++){ if($i==$page) $pagenav.="$i\n"; else $pagenav.="$i\n"; } $pagenav.=" 頁,共 $lastpg 頁";
}
}
include("conn.php");
$result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
//調用pageft(),每頁顯示10條資訊(使用預設的20時,可以省略此參數),使用本頁URL(預設,所以省略掉)。
pageft($total,3);
echo $pagenav;
$result="SELECT * FROM `test` limit $firstcount,$displaypg";
echo $result;
$query=mysql_query($result);
while($row=mysql_fetch_array($query)){
echo "
".$row[name]." | ".$row[sex];
}
?>
回複討論(解決方案)
可能是sql出了問題,建議你貼出報錯資訊以供分析。
echo mysql_error(); 能看到什麼
用的著這麼複雜。。。用get擷取連結後面的參數替換 $firstcount 就行了
輸出SQL語句。然後複製的PHPMYADMIN裡面去,如果有錯誤,會直接報出來。。
echo $result;
這個是沒問題的
說明sql語句沒問題啊
這個錯誤說明你沒有查到東西
如果查到就不會跟你說:你給的參數不是一個資源而是一個布爾值
檢查SQL語句
select * from `test` limit 0,
這裡有問題,分頁長度值沒有載入進來
$displaypg=20
應該設為全域變數,在你的function 定義之前就聲明。
$displaypg=20
應該設為全域變數,在你的function 定義之前就聲明。
對於這個displaypg 變數我定義成了全域變數 把其置於function之前,好像也沒用。我覺得這個代碼有兩個問題,一個是分頁長度值沒有載入進來,二是sql語句沒有執行成功,我是剛接觸php不久,求大神們詳細指導。
______3q!
你函數中有 $globals["displaypg"]=$displaypg;
本意是將每頁行數儲存下來供後續使用
但是你沒有注意到,php 的變數名是區分大小寫
$GLOBALS["displaypg"]=$displaypg;
才是你需要的
還有一處
$page = $_get[page];
應為
$page = $_GET[page];
否則也不會跳頁
你函數中有 $globals["displaypg"]=$displaypg;
本意是將每頁行數儲存下來供後續使用
但是你沒有注意到,php 的變數名是區分大小寫
$GLOBALS["displaypg"]=$displaypg;
才是你需要的
還有一處
$page = $_get[page];
應為
$page = $_GET[page];
否則也不會跳頁
謝謝 就是就這樣的。