php分頁跳轉
『壹』 用php如何實現分頁並能夠實現上一頁,下一頁,跳轉到()頁的功能
<html><head>
<title>分頁示例(php</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<?php
$pagesize=10; //設定每一頁顯示的記錄數
$conn=mysql_connect("localhost","root","jrq");
mysql_select_db("sj",$conn);
$rs = mysql_query( "select * from `dw_newsdata`",$conn); //這里有第二個可選參數,指定打開的連接
//-----------------------------------------------------------------------------------------------//
//分頁邏輯處理
//-----------------------------------------------------------------------------------------------
$tmpArr = mysql_fetch_array($rs);
$numAL = mysql_num_rows($rs); //取得記錄總數$rs
$pages=intval($numAL/$pagesize); //計算總頁數
if ($numAL % $pagesize) $pages++;
//設置預設頁碼
//↓判斷「當前頁碼」是否賦值過
if (isset($_GET['page'])){ $page=intval($_GET['page']); }else{ $page=1; }//否則,設置為第一頁
//↓計算記錄偏移量
$offset=$pagesize*($page - 1);
//↓讀取指定記錄數
$rs=mysql_query("select * from `dw_newsdata` limit $offset,$pagesize",$conn);//取得—當前頁—記錄集!
$curNum = mysql_num_rows($rs); //$curNum - 當前頁實際記錄數,for循環輸出用
?>
<table border="0" width="80%">
<tr>
<td width="50%" bgcolor="#E0E0E0">標題</td>
<td width="50%" bgcolor="#E0E0E0">發布時間</td>
</tr>
<?php
while ($tmpArr = mysql_fetch_array($rs)) //提取一行,並循環判斷
{
$i=0;
// for($a=0;$a<$ColNum;$a++) //==for結束==
?>
<tr>
<td width="50%"><?= $tmpArr[1]; //$tmpArr["news_title"] ; ?></td>
<td width="50%"><?php echo $tmpArr[2]; //$tmpArr["news_cont"]; ?></td>
</tr>
<?php
}//==while結束==
?>
</table>
<?php
//============================//
// 翻頁顯示 一
//============================//
echo "<p>"; // align=center
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;
if ($page > 1)
{
echo "<a href='?page=".$first."'>首頁</a> ";
echo "<a href='?page=".$prev."'>上一頁</a> ";
}
if ($page < $pages)
{
echo "<a href='?page=".$next."'>下一頁</a> ";
echo "<a href='?page=".$last."'>尾頁</a> ";
}
//============================//
// 翻頁顯示 二
//============================//
echo " | 共有".$pages."頁(".$page."/".$pages.")";
for ($i=1;$i< $page;$i++){echo "<a href='?page=".$i."'>[".$i ."]</a> ";} // 1-先輸出當前頁之前的
if ($page > 0) echo "[".$page."]";; // 2-再輸出當前頁
for ($i=$page+1;$i<=$pages;$i++){echo "<a href='?page=".$i."'>[".$i ."]</a> ";}// 3-接著輸出當前頁之後
echo "轉到第 <INPUT maxLength=3 size=3 value=".($page+1)." name=gotox> 頁 <INPUT hideFocus onclick=\"location.href='?page=gotox.value';\" type=button value=Go name=cmd_goto>";
echo "</p>";
?>
</body>
</html>
『貳』 php分頁跳轉問題
show.php?&page=10 改為show.php?page=10 這樣比較好吧,不知道有沒有影響
$page = $_GET[page];
這句要放到 前面,最後這樣寫試試
-----------
$page = $_GET[page];
$rt=new eee;
echo $rt->you();
?>
////////////////////////////////////
『叄』 PHP與資料庫做出分頁跳轉,求完整代碼~~~
舉例說明:
<?php
$url = $_SERVER['PHP_SELF'];
$filename= substr( $url , strrpos($url , '/')+1 ); //本頁文件名
$num=20; //每頁顯示條數
$numsql=mysql_query("select * from TABLE");
$total=mysql_num_rows($numsql); //總條數
$pagesize=(int)(($total-1)/$num)+1;//總頁數
isset($_GET['page'])?$page=$_GET['page']:$page="1";//當前頁數
$limit=(int)(($page-1)*$num);//當前頁的首條記錄
//上面的代碼寫在循環輸出語句之前,下面是循環語句
$query=mysql_query("select * from TABLE order by uid limit $limit,$num");
while(..){…}//省略掉循環代碼,一般是表格行列循環輸出之類的。下面的寫在循環語句之後。
echo "<div id='pagenav'>當前第".$page."頁/共".$pagesize."頁總記錄條數:".$total."條";
if($page>1)
{
echo "<a href='".$filename."?do=source&page=1'>首頁</a>";
echo "<a href='".$filename."?do=source&page=".($page-1)."'>上一頁</a>";
}
if($pagesize>$page)
{
echo "<a href='".$filename."?do=source&page=".($page+1)."'>下一頁</a>";
echo "<a href='".$filename."?do=source&page=".$pagesize."'>尾頁</a>";
}
echo "跳轉到<select id='' size='1' onchange='changese(this)'>";
for($i=1;$i<=$pagesize;$i++)
{
echo "<option value='".$i."'";
if($i==$page) { echo ' selected'; }
echo ">".$i."</option>";
}
echo "</select>";
echo "</div>";
?>
//下面是select選擇分頁的js代碼,注意這里用了php的自定義變數$filename代替頁面路徑,完全可以改成當前文件名。
<script language="javascript">
function changese(obj){
window.location.href="<?php echo $filename;?>?do=source&page="+obj.value;
}
</script>
『肆』 使用php分頁技術後,點擊第一頁的按鈕頁面可順利跳轉,但是點擊第二頁或者之後頁面的按鈕,頁面無法跳轉
看了這個代碼,發現沒有獲取當前頁碼的代碼,所以我改了一下,加了個獲取當前頁碼的代碼
functionshowpagelink($pagesize,$result,$currentpage,$pageleft,$pageright,$phpfile) //分頁顯示函數,參數分別為每頁記錄數,數據集,當前頁,左偏移頁面數量,右偏移頁面數量,鏈接頁面
{
$totalpage=ceil($totalnum/$pagesize); //計算總頁數
$currentpage=$_GET['currentpage'];//獲取當前頁碼
if($currentpage<1)$page=1; //處理頁碼合法性
if($currentpage>$totalpage)$currentpage=$totalpage;
$pagecode='<divclass="pagelink">';
if($currentpage!=1)
{
$pagecode.="<ahref="{$phpfile}?currentpage=1"><<</a>";//第一頁
$pagecode.="<ahref="{$phpfile}?currentpage=".($currentpage-1).""><</a>";//上一頁
}
if(($pagelink=$currentpage-$pageleft)<=0)$pagelink=1;
while($pagelink<$currentpage)
{
$pagecode.="<ahref="{$phpfile}?currentpage=$pagelink"><spanclass='pc'>$pagelink</span></a>";
$pagelink++;
}
$pagecode.="<strong>$currentpage</strong>";//輸出當前頁
$pagelink=$currentpage+1;
$i=0;
while($pagelink<=$totalpageand$i<$pageright)
{
$pagecode.="<ahref="{$phpfile}?currentpage=$pagelink"><spanclass='pc'>$pagelink</span></a>";
$pagelink++;
$i++;
}
if($currentpage!=$totalpage){
$pagecode.="<ahref="{$phpfile}?currentpage=".($currentpage+1)."">></a>";//下一頁
$pagecode.="<ahref="{$phpfile}?currentpage=$totalpage">>></a>";//最後一頁
}
$pagecode.="<span>$currentpage/$totalpage共為您查到".$totalnum."件商品</span>"; //第幾頁,共幾頁
$pagecode.="</div>";
echo$pagecode;
}
functionshowpagedetail($pagesize,$query,$currentpage,$conn) //頁面數據顯示函數
{
$limit=intval($pagesize*($currentpage-1));
$query.="limit$limit,$pagesize";
$result=mysql_query($query,$conn);
while($info=mysql_fetch_array($result,MYSQL_NUM))
{
echo"<ulclass='pro_con1'>";
echo$info[0];
echo"<liclass='pro_img'><ahref='#'title=''><imgsrc='$info[7]'width='150'height='150'alt='產品圖片'/></a></li>";
echo"<liclass='pro_name'><ahref='#'title=''>$info[1]</a></li>";
echo"<liclass='pro_price'>單價:<span>¥$info[5]</span>銷量:<span>$info[3]件</span></li>";
echo"<liclass='pro_custom'><a><inputtype='submit'name='$info[0]'id='$info[0]'value='產品詳情'/></a></li></ul>";
}
$num=mysql_affected_rows();
for($i=1;$i<=$num;$i++){
if(@$_REQUEST[$i]){
echo$i;
$_REQUEST["temp"]=$i;
echo"<script>location.href='proct_detail.php'</script>";
}}}
$pagesize=2;
$phpfile="proct.php";
if(!@$currentpage=$_GET["currentpage"])$currentpage=1;
$pageleft=1;
$pageright=1;
showpagedetail($pagesize,$query,$currentpage,$conn);
$num=mysql_affected_rows();
for($i=1;$i<=$num;$i++){
if(@$_REQUEST[$i]){
echo$i;
$_REQUEST["temp"]=$i;
echo"<script>location.href='proct_detail.php'</script>";
}}
你可以先試試這個
『伍』 PHP分頁中跳轉到指定頁如何做
使用GET傳參,再根據參數來確定查詢數據開始的偏移量,例:
$sql = sprintf('SELECT * FROM t WHERE uid=1 LIMIT %d,10',$_GET['page']);
$_GET['page']決定查詢結果集開始的序號,然後下一頁的開始序號就是這個值加上每頁顯示的條數(這里是10).