編寫php分頁代碼 mysql_fetch_arry()就是無法執行

來源:互聯網
上載者:User
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];
否則也不會跳頁


謝謝 就是就這樣的。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.