當前位置:首頁 » 編程語言 » php靜態分頁

php靜態分頁

發布時間: 2022-08-11 01:20:20

1. php如何實現網頁靜態

一、靜態化的優點:
1有利於搜索引擎收錄網站頁面的信息:搜索引擎更喜歡靜態的,更變於抓取,搜索引擎SEO排名會更容易提高。
2靜態網頁化網頁穩定
3可以提高網頁載入速度
4減輕伺服器負擔,瀏覽器不需要頻發調用資料庫
5資料庫出錯不會影響正常訪問
二、偽靜態
PHP偽靜態:是利用Apache mod_rewite實現url重寫的方法
改寫訪問地址,能夠通過URL的PATHINFO模式來改動它。讓它看上去更像一個靜態頁面。從而有更大的幾率被搜索引擎抓取和收錄,僅是對搜索引擎比較友好,偽靜態化
三、純靜態化
純靜態化,就是生成HTML文件的方式,我們須要開啟PHP自帶的緩存機制,即ob_start來開啟緩存。而且在ob_start之前不能有不論什麼輸出,否則運行失敗,然後我們用ob_get_contents函數來獲取緩存中的內容,該函數會返回一個字元串。第三個函數就是ob_end_clean,它用來清空緩存中的內容而且關閉,成功返回True,失敗返回False。
<?php
if(file_exists("match.html") && (time()-filemtime("match.html"))<300)
{
//如果存在對應的靜態文件,則直接訪問
require_once("match.html");
}else{
//這里用數組來模擬資料庫操作,現實一般都是操作資料庫得到對應數據
$student = array("huangxing","chenyuwei",'xufei','zhangjingwen','xuepei');
ob_start();
//載入模板
require_once("muban.php");
file_put_contents("match.html",ob_get_clean());
require_once('match.html');
}

2. PHP生成靜態分頁的問題

#test.php
$arr=array(
array('sv_id'=>1,'mid_id'=>1,'sv_question'=>20),
array('sv_id'=>2,'mid_id'=>2,'sv_question'=>10),
array('sv_id'=>3,'mid_id'=>1,'sv_question'=>20),
array('sv_id'=>4,'mid_id'=>3,'sv_question'=>20),
array('sv_id'=>5,'mid_id'=>2,'sv_question'=>20),
);
#包含分頁類
include("../centpage_mode_class.php");
#創建分頁對象
$cp=newCentpage();
#每頁的行數
$pagesize=1;
#數組的長度
$sum=count($arr);
#分頁
$pageinfor=$cp->centPages($pagesize,$sum);
#分頁顯示
for($i=$pageinfor['startRow'];$i<($pageinfor['startRow']+$pageinfor['pageSize']);$i++){
echo"id:".$arr[$i]['sv_id']."<br>";
echo"question:".$arr[$i]['sv_question']."<br>";
}
#分頁控制項
echo$cp->centpageInfor($pageinfor);
#分頁類
<?php

classCentpage{
var$page;

//centpage
functioncentPages($pageSize,$sumCount){
//computestartRowandstartPage
$page=null;
global$page;
if(isset($_GET['page'])){
$page=$_GET['page'];
}else{
$page=1;
}
$startRow=($page-1)*$pageSize;//startrow

//total
if($sumCount%$pageSize==0){
$sumPage=floor($sumCount/$pageSize);
}else{
$sumPage=floor($sumCount/$pageSize)+1;
}

$prePage=$page-1;//previous
$nextPage=$page+1;//next

//getreguestway
$url=$_SERVER['REQUEST_URI'];
$urlArray=parse_url($url);
$url=$urlArray['path'];

$arrPages=array("page"=>$page,"startRow"=>$startRow,"previous"=>$prePage,"next"=>$nextPage,
"total"=>$sumCount,"sumPage"=>$sumPage,"pageSize"=>$pageSize,"url"=>$url);
return$arrPages;
}

//centpageinformation
functioncentpageInfor($pageInfor){
echo"&nbsp;|&nbsp;總記錄:".(empty($pageInfor['total'])?0:$pageInfor['total'])."&nbsp;|&nbsp;";
echo"共".(empty($pageInfor['sumPage'])?0:$pageInfor['sumPage'])."頁&nbsp;|&nbsp;";
echo"第".(empty($pageInfor['page'])?0:$pageInfor['page'])."頁&nbsp;|&nbsp;";
if(!empty($pageInfor)){
if($pageInfor['page']>1)echo"<ahref='".$pageInfor['url']."?page=1'>首頁</a>&nbsp;|&nbsp;";
if($pageInfor['total']>$pageInfor['pageSize']){
if($pageInfor['page']>=$pageInfor['sumPage']){
echo"<ahref='".$pageInfor['url']."?page=".$pageInfor['previous']."'>上一頁</a>&nbsp;|&nbsp;下一頁&nbsp;|&nbsp;";
}elseif($pageInfor['page']<=1){
echo"上一頁&nbsp;|&nbsp;<ahref='".$pageInfor['url']."?page=".$pageInfor['next']."'>下一頁</a>&nbsp;|&nbsp;";
}else{
echo"<ahref='".$pageInfor['url']."?page=".$pageInfor['previous']."'>上一頁</a>&nbsp;|&nbsp;";
echo"<ahref='".$pageInfor['url']."?page=".$pageInfor['next']."'>下一頁</a>&nbsp;|&nbsp;";
}//endif
}//endif
if($pageInfor['page']<$pageInfor['sumPage'])
echo"<ahref='".$pageInfor['url']."?page=".$pageInfor['sumPage']."'>末頁</a>&nbsp;|&nbsp;";
}//endif!empty
}

}

?>

3. [php]我弄為靜態 這個分頁的正則怎麼寫

.*是貪婪匹配,這里應該用.*?
試試
RewriteRule ^/category_(.*?)_(.*?)_(.*?)_(.*?).html$ /category.php?action=$1&type=$2&bclassid=$3&page=$4

4. php分頁代碼 怎麼寫

Web開發是今後分布式程式開發的主流,通常的web開發都要涉及到與資料庫打交道,客戶端從伺服器端讀取通常都是以分頁的形式來顯示,一頁一頁的閱讀起來既方便又美觀。所以說寫分頁程序是web開發的一個重要組成部分,在這里,我們共同來研究分頁程序的編寫。

一、分頁程序的原理

分頁程序有兩個非常重要的參數:每頁顯示幾條記錄($pagesize)和當前是第幾頁($page)。有了這兩個參數就可以很方便的寫出分頁程序,我們以Mysql資料庫作為數據源,在mysql里如果要想取出表內某段特定內容可以使用的 T-SQL語句:select * from table limit offset,rows來實現。這里的offset是記錄偏移量,它的計算方法是offset=$pagesize*($page-1),rows是要顯示的記錄條數,這里就是$page。也就是說select * from table limit 10,10這條語句的意思是取出表裡從第11條記錄開始的20條記錄。

二、主要代碼解析

$pagesize=10; //設置每一頁顯示的記錄數
$conn=mysql_connect("localhost","root",""); //連接資料庫
$rs=mysql_query("select count(*) from tb_proct",$conn); //取得記錄總數$rs
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];

//計算總頁數

$pages=intval($numrows/$pagesize);

//判斷頁數設置

if (isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
$page=1; //否則,設置為第一頁
}

三、創建用例用表myTable

create table myTable(id int NOT NULL auto_increment,news_title varchar(50),news_cont text,add_time datetime,PRIMARY KEY(id))

四、完整代碼

<html>
<head>
<title>php分頁示例</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<?php
$conn=mysql_connect("localhost","root","");
//設定每一頁顯示的記錄數
$pagesize=1;
mysql_select_db("mydata",$conn);
//取得記錄總數$rs,計算總頁數用
$rs=mysql_query("select count(*) from tb_proct",$conn);
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];
//計算總頁數

$pages=intval($numrows/$pagesize);
if ($numrows%$pagesize)
$pages++;
//設置頁數
if (isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
//設置為第一頁
$page=1;
}
//計算記錄偏移量
$offset=$pagesize*($page - 1);
//讀取指定記錄數
$rs=mysql_query("select * from myTable order by id desc limit $offset,$pagesize",$conn);
if ($myrow = mysql_fetch_array($rs))
{
$i=0;
?>
<table border="0" width="80%">
<tr>
<td width="50%" bgcolor="#E0E0E0">
<p align="center">標題</td>
<td width="50%" bgcolor="#E0E0E0">
<p align="center">發布時間</td>
</tr>
<?php
do {
$i++;
?>
<tr>
<td width="50%"><?=$myrow["news_title"]?></td>
<td width="50%"><?=$myrow["news_cont"]?></td>
</tr>
<?php
}
while ($myrow = mysql_fetch_array($rs));
echo "</table>";
}
echo "<div align='center'>共有".$pages."頁(".$page."/".$pages.")";
for ($i=1;$i< $page;$i++)
echo "<a href='fenye.php?page=".$i."'>[".$i ."]</a> ";
echo "[".$page."]";
for ($i=$page+1;$i<=$pages;$i++)
echo "<a href='fenye.php?page=".$i."'>[".$i ."]</a> ";
echo "</div>";
?>
</body>
</html>

五、總結

本例代碼在windows2000 server+php4.4.0+mysql5.0.16上運行正常。該示例顯示的分頁格式是[1][2][3]…這樣形式。假如想顯示成「首頁 上一頁 下一頁 尾頁」這樣形式,請加入以下代碼:

$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;

if ($page > 1)
{
echo "<a href='fenye.php?page=".$first."'>首頁</a> ";
echo "<a href='fenye.php?page=".$prev."'>上一頁</a> ";
}

if ($page < $pages)
{
echo "<a href='fenye.php?page=".$next."'>下一頁</a>
echo "<a href='fenye.php?page=".$last."'>尾頁</a> ";
}

其實,寫分頁顯示代碼是很簡單的,只要掌握了它的工作原理。希望這篇文章能夠帶給那些需要這方面程序web程序員的幫助。

5. php+smarty靜態分頁 奇怪生成一條相同的記錄 高手幫看看幾天了都沒看出來 在線等...

問題大致如一樓所說,造成此問題的原因在於你對$start_page的計算方法的錯誤。
正確代碼為:
for($i=0;$i<$pages;$i++)
{
$start_page =$i*$pagecount;
}
你原來為$start_page=$i*$start_page ,而且$start_page是沒有賦初值的

6. PHP怎麼製作分頁

方法/步驟

首先要了解下分頁的原理即
SELECT * FROM table …… limit 開始位置 , 操作條數
開始位置從0開始
SELECT * FROM table …… limit 0 , 20
取最前面20條
SELECT * FROM table …… limit 10 , 20
11條到20條
其次分頁要用的公式
得到公式
(當前頁數 - 1 )X 每頁條數 , 每頁條數
Select * from table limit ($Page- 1) * $PageSize, $PageSize

還要了解parse_url()解析URL函數
parse_url() 是講URL解析成有固定鍵值的數組的函數
$ua=parse_url("http://username:password@hostname/path?arg=value#anchor");
print_r($ua);
結果:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

創建資料庫bbs和表test有
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) character set gb2312 NOT NULL,
`sex` varchar(2) character set gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
然後插入十幾條測試數據即可

寫mysql資料庫連接代碼保存conn.php文件里
代碼如下
<?php
$conn = @ mysql_connect("localhost", "root", "") or die("資料庫鏈接錯誤");
mysql_select_db("bbs", $conn);
mysql_query("set names 'GBK'"); //使用GBK中文編碼;
function htmtocode($content) {
$content = str_replace("\n", "<br>", str_replace(" ", " ", $content));
return $content;
}
//$content=str_replace("'","'",$content);
//htmlspecialchars();
?>

寫分頁函數page.php
代碼如下
<?php
function _PAGEFT($totle, $displaypg = 20, $url = '') {
global $page, $firstcount, $pagenav, $_SERVER;
$GLOBALS["displaypg"] = $displaypg;
if (!$page)
$page = 1;
if (!$url) {
$url = $_SERVER["REQUEST_URI"];
}
//URL分析:
$parse_url = parse_url($url);
$url_query = $parse_url["query"]; //單獨取出URL的查詢字串
if ($url_query) {
$url_query = ereg_replace("(^|&)page=$page", "", $url_query);
$url = str_replace($parse_url["query"], $url_query, $url);
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 = "顯示第 <B>" . ($totle ? ($firstcount +1) : 0) . "</B>-<B>" . min($firstcount + $displaypg, $totle) . "</B> 條記錄,共 $totle 條記錄";
//如果只有一頁則跳出函數:
if ($lastpg <= 1)
return false;
$pagenav .= " <a href='$url=1'>首頁</a> ";
if ($prepg)
$pagenav .= " <a href='$url=$prepg'>前頁</a> ";
else
$pagenav .= " 前頁 ";
if ($nextpg)
$pagenav .= " <a href='$url=$nextpg'>後頁</a> ";
else
$pagenav .= " 後頁 ";
$pagenav .= " <a href='$url=$lastpg'>尾頁</a> ";
//下拉跳轉列表,循環列出所有頁碼:
$pagenav .= " 到第 <select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n";
for ($i = 1; $i <= $lastpg; $i++) {
if ($i == $page)
$pagenav .= "<option value='$i' selected>$i</option>\n";
else
$pagenav .= "<option value='$i'>$i</option>\n";
}
$pagenav .= "</select> 頁,共 $lastpg 頁";
}
include("conn.php");
$result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
//調用pageft(),每頁顯示10條信息(使用默認的20時,可以省略此參數),使用本頁URL(默認,所以省略掉).
_PAGEFT($total,5);
echo $pagenav;
$result=mysql_query("SELECT * FROM `test` limit $firstcount,$displaypg ");
while($row=mysql_fetch_array($result)){
echo "<hr><b>".$row[name]." | ".$row[sex];
}
?>
調用數據和分頁list.php
<?php
/**
* 愛微網 www.iiwnet.com/php/
*/
include("conn.php");
$pagesize=5;
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url[path];
$numq=mysql_query("SELECT * FROM `test`");
$num = mysql_num_rows($numq);
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num > $pagesize){
if($pageval<=1)$pageval=1;
echo "共 $num 條".
" <a href=$url?page=".($pageval-1).">上一頁</a> <a href=$url?page=".($pageval+1).">下一頁</a>";
}
echo $SQL="SELECT * FROM `test` limit $page $pagesize ";
$query=mysql_query($SQL);
while($row=mysql_fetch_array($query)){
echo "<hr><b>".$row[name]." | ".$row[sex];
}
?>

注意事項

注意分頁公式寫法你只要記住即可;
(當前頁數 - 1 )X 每頁條數 , 每頁條數;
Select * from table limit ($Page- 1) * $PageSize, $PageSize;
注意三個代碼文件在同一個目錄下;
主要是最後的list.php調用代碼要細看很有用。

7. php做分頁做偽靜態,我不知道為什麼分類的id對不上

只要你動態顯示沒問題,那麼就是偽靜態規則有問題。
如果動態都顯示有問題,那麼就是分頁代碼有問題。
請從以上2個方面進行排查。

8. PHP中分頁偽靜態鏈接要如何設置

Rewrite規則已經寫好,剩下的只是需要將分頁鏈接修改為proct_list1.html就可以了。
<a href="proct_list1.html">第一頁</a>
<a href="proct_list<?php echo $pageCount; ?>.html">最末頁</a>
<a href="proct_list<?php echo $pageprev; ?>.html">前一頁</a>

9. PHP生成靜態分頁問題

在你的程序前面添加下面一行即可(<?php之後添加):
set_time_limit (0);

10. php用ob系列生成html靜態頁面如何進行內容分頁

具體不知道你是怎麼個生成靜態頁面法,是用戶訪問一頁生成一頁,還是事先在後台手動生成所有頁,不過靜態頁面分無非兩種思路,一個就是用JS來實現虛分頁,這種方法就是將需分頁顯示的所有頁內容都生成在一個靜態頁面內,然後用JS來控制特定DIV或LI等標簽來現實分頁,另一種就是PHP實現的硬分頁,就是在生成頁面時將所有內容通過PHP解析處理後都取出放在一個數組A內,如A[0]的內容就是第一頁,A[1]就是第二頁的內容,如此形式,然後再循環生成這些頁,記得自己還要造構一個分頁條,類似 [1] [2] [3] ... 分別關聯到具體頁面,如test0.html,test1.html,test2.html...如此形式就行了.不知道各位還有沒其他更好的辦法?

熱點內容
卡爾頓麵包腳本策劃 發布:2025-01-21 06:34:45 瀏覽:263
界面像電腦一樣的伺服器 發布:2025-01-21 06:29:52 瀏覽:989
匿名祝福源碼 發布:2025-01-21 06:29:13 瀏覽:348
雲識別系統登陸密碼是多少 發布:2025-01-21 06:23:39 瀏覽:368
stl源碼剖析中文 發布:2025-01-21 06:14:17 瀏覽:344
我的世界手機版為什麼連不上伺服器 發布:2025-01-21 06:14:17 瀏覽:453
壓縮機的性能參數 發布:2025-01-21 06:10:34 瀏覽:607
2014年預演算法修訂歷時20年 發布:2025-01-21 06:05:46 瀏覽:191
linux切換到root用戶 發布:2025-01-21 06:05:38 瀏覽:516
php存在文件 發布:2025-01-21 06:04:51 瀏覽:171