當前位置:首頁 » 編程語言 » php分頁原理

php分頁原理

發布時間: 2022-04-29 21:46:41

1. php分頁原理是怎麼樣的

1、前言

分頁顯示是一種非常常見的瀏覽和顯示大量數據的方法,屬於web編程中最常處理的事件之一。對於web編程的老手來說,編寫這種代碼實在是和呼吸一樣自然,但是對於初學者來說,常常對這個問題摸不著頭緒,因此特地撰寫此文對這個問題進行詳細的講解,力求讓看完這篇文章的朋友在看完以後對於分頁顯示的原理和實現方法有所了解。本文適合初學者閱讀,所有示例代碼均使用php編寫。

2、原理

所謂分頁顯示,也就是將資料庫中的結果集人為的分成一段一段的來顯示,這里需要兩個初始的參數:

每頁多少條記錄($PageSize)?
當前是第幾頁($CurrentPageID)?

現在只要再給我一個結果集,我就可以顯示某段特定的結果出來。
至於其他的參數,比如:上一頁($PreviousPageID)、下一頁($NextPageID)、總頁數($numPages)等等,都可以根據前邊這幾個東西得到。
以mysql資料庫為例,如果要從表內截取某段內容,sql語句可以用:select * from table limit offset, rows。看看下面一組sql語句,嘗試一下發現其中的規率。

前10條記錄:select * from table limit 0,10
第11至20條記錄:select * from table limit 10,10
第21至30條記錄:select * from table limit 20,10
……

這一組sql語句其實就是當$PageSize=10的時候取表內每一頁數據的sql語句,我們可以總結出這樣一個模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

拿這個模板代入對應的值和上邊那一組sql語句對照一下看看是不是那麼回事。搞定了最重要的如何獲取數據的問題以後,剩下的就僅僅是傳遞參數,構造合適的sql語句然後使用php從資料庫內獲取數據並顯示了。以下我將用具體代碼加以說明。

3、簡單代碼
請詳細閱讀以下代碼,自己調試運行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

<?php
// 建立資料庫連接
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
// 獲取當前頁數
if( isset($_GET['page']) ){
$page = intval( $_GET['page'] );
}
else{
$page = 1;
}
// 每頁數量
$PageSize = 10;
// 獲取總數據量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
// 記算總共有多少頁
if( $amount ){
if( $amount < $page_size ){ $page_count = 1; } //如果總數據量小於$PageSize,那麼只有一頁
if( $amount % $page_size ){ //取總數據量除以每頁數的余數
$page_count = (int)($amount / $page_size) + 1; //如果有餘數,則頁數等於總數據量除以每頁數的結果取整再加一
}else{
$page_count = $amount / $page_size; //如果沒有餘數,則頁數等於總數據量除以每頁數的結果
}
}
else{
$page_count = 0;
}

// 翻頁鏈接
$page_string = '';
if( $page == 1 ){
$page_string .= '第一頁|上一頁|';
}
else{
$page_string .= '<a href="/?page=1>";第一頁</a>|<a href="/?page='."($page-1).'>上一頁</a>|';
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= '下一頁|尾頁';
}
else{
$page_string .= '<a href="/?page='."($page+1).'>下一頁</a>|<a href="/?page='."$page_count.'>尾頁</a>';
}
// 獲取數據,以二維數組格式返回結果
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);

while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
// 沒有包含顯示結果的代碼,那不在討論范圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果
?>

4、OO風格代碼
以下代碼中的資料庫連接是使用的pear db類進行處理

<?php
// FileName: Pager.class.php
// 分頁類,這個類僅僅用於處理數據結構,不負責處理顯示的工作
Class Pager
{
var $PageSize; //每頁的數量
var $CurrentPageID; //當前的頁數
var $NextPageID; //下一頁
var $PreviousPageID; //上一頁
var $numPages; //總頁數
var $numItems; //總記錄數
var $isFirstPage; //是否第一頁
var $isLastPage; //是否最後一頁
var $sql; //sql查詢語句

function Pager($option)
{
global $db;
$this->_setOptions($option);
// 總條數
if ( !isset($this->numItems) )
{
$res = $db->query($this->sql);
$this->numItems = $res->numRows();
}
// 總頁數
if ( $this->numItems > 0 )
{
if ( $this->numItems < $this->PageSize ){ $this->numPages = 1; }
if ( $this->numItems % $this->PageSize )
{
$this->numPages= (int)($this->numItems / $this->PageSize) + 1;
}
else
{
$this->numPages = $this->numItems / $this->PageSize;
}
}
else
{
$this->numPages = 0;
}

switch ( $this->CurrentPageID )
{
case $this->numPages == 1:
$this->isFirstPage = true;
$this->isLastPage = true;
break;
case 1:
$this->isFirstPage = true;
$this->isLastPage = false;
break;
case $this->numPages:
$this->isFirstPage = false;
$this->isLastPage = true;
break;
default:
$this->isFirstPage = false;
$this->isLastPage = false;
}

if ( $this->numPages > 1 )
{
if ( !$this->isLastPage ) { $this->NextPageID = $this->CurrentPageID + 1; }
if ( !$this->isFirstPage ) { $this->PreviousPageID = $this->CurrentPageID - 1; }
}

return true;
}

/***
*
* 返回結果集的資料庫連接
* 在結果集比較大的時候可以直接使用這個方法獲得資料庫連接,然後在類之外遍歷,這樣開銷較小
* 如果結果集不是很大,可以直接使用getPageData的方式獲取二維數組格式的結果
* getPageData方法也是調用本方法來獲取結果的
*
***/

function getDataLink()
{
if ( $this->numItems )
{
global $db;

$PageID = $this->CurrentPageID;

$from = ($PageID - 1)*$this->PageSize;
$count = $this->PageSize;
$link = $db->limitQuery($this->sql, $from, $count); //使用Pear DB::limitQuery方法保證資料庫兼容性

return $link;
}
else
{
return false;
}
}

/***
*
* 以二維數組的格式返回結果集
*
***/

function getPageData()
{
if ( $this->numItems )
{
if ( $res = $this->getDataLink() )
{
if ( $res->numRows() )
{
while ( $row = $res->fetchRow() )
{
$result[] = $row;
}
}
else
{
$result = array();
}

return $result;
}
else
{
return false;
}
}
else
{
return false;
}
}

function _setOptions($option)
{
$allow_options = array(
'PageSize',
'CurrentPageID',
'sql',
'numItems'
);

foreach ( $option as $key => $value )
{
if ( in_array($key, $allow_options) && ($value != null) )
{
$this->$key = $value;
}
}

return true;
}
}
?>

<?php
// FileName: test_pager.php
// 這是一段簡單的示例代碼,前邊省略了使用pear db類建立資料庫連接的代碼
require "Pager.class.php";
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
}
else
{
$page = 1;
}
$sql = "select * from table order by id";
$pager_option = array(
"sql" => $sql,
"PageSize" => 10,
"CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new Pager($pager_option);
$data = $pager->getPageData();
if ( $pager->isFirstPage )
{
$turnover = "首頁|上一頁|";
}
else
{
$turnover = "<a href='?page=1&numItems=".$pager->numItems."'>首頁</a>|<a href="/?page=".$pager->PreviousPageID."&numItems=".$pager->numItems."'>上一頁</a>|";
}
if ( $pager->isLastPage )
{
$turnover .= "下一頁|尾頁";
}
else
{
$turnover .= "<a href="/?page=".$pager->NextPageID."&numItems=".$pager->numItems."'>下一頁</a>|<a href="/?page=".$pager->numPages."&numItems=".$pager->numItems."'>尾頁</a>";
}
?>

需要說明的地方有兩個:

這個類僅僅處理數據,並不負責處理顯示,因為我覺得將數據的處理和結果的顯示都放到一個類里邊實在是有些勉強。顯示的時候情況和要求多變,不如自己根據類給出的結果處理,更好的方法是根據這個Pager類繼承一個自己的子類來顯示不同的分頁,比如顯示用戶分頁列表可以:

<?php
Class MemberPager extends Pager
{
function showMemberList()
{
global $db;

$data = $this->getPageData();
// 顯示結果的代碼
// ......
}
}
/// 調用
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
}
else
{
$page = 1;
}
$sql = "select * from members order by id";
$pager_option = array(
"sql" => $sql,
"PageSize" => 10,
"CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new MemberPager($pager_option);
$pager->showMemberList();
?>

第二個需要說明的地方就是不同資料庫的兼容性,在不同的資料庫里截獲一段結果的寫法是不一樣的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
......
所以要在類里邊獲取結果的時候需要使用pear db類的limitQuery方法。

ok,寫完收功,希望花時間看完這些文字的你不覺得是浪費了時間。

2. php如何根據總數分頁返回數據json 給手機端

列印連接結果:var_mp(mysql_connect('','','',''));

3. 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調用代碼要細看很有用。

4. php 分頁類怎麼用啊

<?php
classPage{
private$total_rows;//資料庫總條數
private$per_page_rows;//每頁顯示條數
private$limit;
private$uri;
private$total_pages;//總頁數
private$config=array("header"=>"記錄條數","prev"=>"上一頁","next"=>"下一頁","first"=>"首頁","last"=>"尾頁");
private$list_length=8;
publicfunction__construct($total_rows,$per_page_rows=10,$url_args){
$this->total_rows=$total_rows;
$this->per_page_rows=$per_page_rows;
$this->uri=$this->get_uri($url_args);
$this->page=!empty($_GET['page'])?$_GET['page']:1;
$this->total_pages=ceil($this->total_rows/$this->per_page_rows);
$this->limit=$this->set_limit();
}
privatefunctionset_limit(){
return"limit".($this->page-1)*$this->per_page_rows.",{$this->per_page_rows}";
}
privatefunctionget_uri($url_args){
$url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"],"?")?"":"?").$url_args;
$parse=parse_url($url);
if(isset($parse['query'])){
parse_str($parse['query'],$params);//把url字元串解析為數組
unset($params['page']);//刪除數組下標為page的值
$url=$parse['path'].'?'.http_build_query($params);//再次構建url
}
return$url;
}
publicfunction__get($args){
if($args=="limit"){
return$this->limit;
}else{
returnnull;
}
}
privatefunctionstart_page(){
if($this->total_rows==0){
return0;
}else{
return(($this->page-1)*$this->per_page_rows)+1;
}
}
privatefunctionend_page(){
returnmin($this->page*$this->per_page_rows,$this->total_rows);
}
privatefunctiongo_first(){
$html="";
if($this->page==1){
$html.="&nbsp;{$this->config['first']}&nbsp;";
}else{
$html.="&nbsp;<ahref='{$this->uri}&page=1'>{$this->config['first']}</a>&nbsp;";
}
return$html;
}
privatefunctiongo_prev(){
$html="";
if($this->page==1){
$html.="&nbsp;{$this->config['prev']}&nbsp;";
}else{
$html.="&nbsp;<ahref='{$this->uri}&page={$this->page}-1'>{$this->config['prev']}</a>&nbsp;";
}
return$html;
}
privatefunctiongo_next(){
$html="";
if($this->page==$this->total_pages){
$html.="&nbsp;{$this->config['next']}&nbsp;";
}else{
$html.="&nbsp;<ahref='{$this->uri}&page={$this->page}+1'>{$this->config['next']}</a>&nbsp;";
}
return$html;
}
privatefunctiongo_last(){
$html="";
if($this->page==$this->total_pages){
$html.="&nbsp;{$this->config['last']}&nbsp;";
}else{
$html.="&nbsp;<ahref='{$this->uri}&page={$this->total_pages}'>{$this->config['last']}</a>&nbsp;";
}
return$html;
}
privatefunctiongo_page(){
return'&nbsp;<inputtype="text"onkeydown="javascript:if(event.keyCode==13){varpage=(this.value>'.$this->total_pages.')?'.$this->total_pages.':this.value;location=''.$this->uri.'&page='+page+''}"value="'.$this->page.'"style="width:25px;"/><inputtype="button"onclick="javascript:varpage=(this.previousSibling.value>'.$this->total_pages.')?'.$this->total_pages.':this.previousSibling.value;location=''.$this->uri.'&page='+page+''"value="GO"/>&nbsp;';
}
privatefunctionpage_list(){
$link_page="";
$i_num=floor($this->list_length/2);
for($i=$i_num;$i>=1;$i--){
$page=$this->page-$i;
if($page<1){
continue;
}else{
$link_page.="&nbsp;<ahref='{$this->uri}&page={$page}'>{$page}</a>&nbsp;";
}
}
$link_page.="&nbsp;{$this->page}&nbsp;";
for($i=1;$i<$i_num;$i++){
$page=$this->page+$i;
if($page<=$this->total_pages){
$link_page.="&nbsp;<ahref='{$this->uri}&page={$page}'>{$page}</a>&nbsp;";
}else{
break;
}
}
return$link_page;
}
publicfunctionout_page($display=array(0,1,2,3,4,5,6,7,8)){
$display_html='';
$html[0]="&nbsp;共有<b>{$this->total_rows}</b>{$this->config['header']}&nbsp;";
$html[1]="&nbsp;每頁顯示<b>".($this->end_page()-$this->start_page()+1)."</b>條,本頁顯示從<b>{$this->start_page()}</b>--<b>{$this->end_page()}</b>{$this->config['header']}&nbsp;";
$html[2]="&nbsp;<b>{$this->page}</b>/<b>{$this->total_pages}</b>頁&nbsp;";
$html[3]=$this->go_first();
$html[4]=$this->go_prev();
$html[5]=$this->page_list();
$html[6]=$this->go_next();
$html[7]=$this->go_last();
$html[8]=$this->go_page();
foreach($displayas$index){
$display_html.=$html[$index];
}
return$display_html;
}
}
?>

5. PHP 帶省略號的分頁程序,原理是什麼 分頁程序我已經寫出來了,但是那個省略號 演算法 和原理沒弄懂

這個省略號不是直接加上去的嗎?
比如1,2,3,4.......
這個你加個判斷啊,超過4頁echo 省略號
如果要跳轉加個鏈接,設置個頁碼5不就可以了
如果是點了之後出現5,6,7,8這樣的
就echo出個JS代碼,
比如省略號一個層,5,6,7,8一個層,點一下隱藏掉省略號,出現5,6,7,8的層

6. PHP分頁問題!

分頁沒樓上說的那麼復雜,你仔細看看你的列印分頁的地方,是在</tr>與</table>之間,你應該放在一個單元格里。這樣他才能顯示。

/*
分頁步驟:
1.給出每頁的記錄條數
2.求出總頁數(先得到總條數,再求總頁數)
3.獲得當前頁的id值
4.得到每個頁面的結果集
5.循環取出
*/
<?php
$id=$_GET["id"];
if($id=="")
{
$id=1;
}
$paginal=10;
$sql="select * from contents where title=$id";
$rs=mysql_query($sql);
$sum=mysql_num_rows($rs); //信息的總數
$pagination=($sum-1)/$paginal+1; //信息的總頁數
$pagination=(int)$pagination; //總頁數取整
$pageno=$_GET["pageno"]; //當前頁數

if($pageno=="" || $pageno<1)
{
$pageno=1;
}
if($pageno>$pagination)
{
$pageno=$pagination;
}

$startno=($pageno-1)*$paginal; //當前結果集(當前查看第幾條)
$sql="select * from contents where title=$id order by id desc limit $startno,$paginal";
$rs=mysql_query($sql);
?>
<table width="780" border="1" bordercolor="#000000" align="center">
<tr>
<td>編號</td>
<td>內容</td>
<td>作者</td>
</tr>
<?php
while($rows=mysql_fetch_assoc($rs))
{
?>
<tr>
<td><?php echo $rows["Id"]?></td>
<td><?php echo $rows["Contents"]?></td>
<td><?php echo $rows["Author"]?></td>
</tr>
<?php
}
?>
</table>

7. 誰給我講下ajax+php無刷新分頁原理

ajax 是一個js腳本。或者用jquery裡面的ajax
如果你要驗證用戶名。你可以在你的input 屬性裡面加上 onchange=「調用函數」
調用函數就是ajax的代碼。
ajax是這樣完成工作的,
首先發送請求到你指定的頁面比如abc.php(附帶你設置的post或者get),
abc.php響應成功後,執行它裡面的代碼去處理你傳遞過來的參數。如果存在這個用戶。然後返回一個值或者函數 如果不存在也會返回一個值或者函數,你要自己去設置。
然後ajax把這個返回的值或者函數進行處理,比如顯示它,或者調用函數禁用提交按鈕。

8. php分頁顯示問題!!555555555

你有兩個問題吧。

一是分頁顯示留言,每頁顯示20條,通過上一頁、下一頁瀏覽其它留言,是吧。MYSQL+PHP實現分頁很簡單,主要原理是修改index.php裡面的SQL語句,把"SELECT * FROM intd"改為"SELECT * FROM intd limit $start_no,20",執行SQL之前先計算$start_no=$page*20,也就是等於頁號×每頁條數。

二是每條留言只顯示摘要,滑鼠點擊才顯示詳細內容,這可以使用JS代碼來實現。

index.php首頁的前面部分我修改如下:

<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<?php
include("IncDB.php");

$page+=0;
$start_no=$page*20;

$result=mysqli_query($link,"SELECT * FROM intd LIMIT $start_no,20");
$i=0;
$row=mysqli_fetch_row($result);
while($row)
{
$i++;
echo "ID: ".$row[0]." 姓名: ".$row[1]." 時間: ".$row[3]."<br>";
echo "<span id=note$i style='display:none'>";
echo $row[2];
$brif=substr($row[2],0,20);
echo "</span><span onclick=\"this.style.display='none';$note$i.style.display='';\">$brif(詳細。。。)</span>";
echo "<hr><br>";
$row=mysqli_fetch_row($result);
}
mysqli_close($link);
?>

補充:
建議你一次性寫清楚你究竟要的是什麼樣子。當你耐心的描述了你的需求的時候,很可能你已經有了解決的思路了,許多程序員不注重撰寫文檔,這是不好的。

補充:
非常抱歉,我還沒有明白你想要什麼樣子,希望顯示什麼內容,希望做什麼操作以後又是什麼樣子。

補充:
分頁的道理會了沒有,沒頁顯示5條就把程序裡面的20改為5就是,顯示完畢要用如下的代碼實現上一頁、下一頁:
$pre_page=$page>0?$page-1:$page;
$next_page=$page+1;
echo "<a href=$PHP_SELF?page=$pre_page>上一頁</a>";
echo "<a href=$PHP_SELF?page=$next_page>下一頁</a>";

點擊詳細以後單獨一個頁面顯示的效果並不太好,我還是覺得我這樣在當前位置顯示詳細留言好些,程序簡單,而且用戶也方便,不開那麼多窗口。你要那樣做也不困難,index.php是輸出部分這樣設計:
$result=mysqli_query($link,"SELECT id,name,left(text,20) text,datetime FROM intd LIMIT $start_no,20");
$row=mysqli_fetch_row($result);
while($row)
{
echo "ID: ".$row[0]." 姓名: ".$row[1]." 時間: ".$row[3]."<br>";
echo $row[2];
echo "<a href=detail.php?id=$row[0]>詳細。。。</a>";
echo "<hr><br>";
$row=mysqli_fetch_row($result);
}
mysqli_close($link);

看到了嗎,你需要新編寫一個一頁只顯示一條的文件detail.php,大概結構如下:

$result=mysqli_query($link,"SELECT * FROM intd LIMIT id=$id");
$row=mysqli_fetch_row($result);
echo "ID: ".$row[0]." 姓名: ".$row[1]." 時間: ".$row[3]."<br>";
echo "<span id=note$i style='display:none'>";
echo $row[2];
echo "<hr><br>";
mysqli_close($link);

9. 如何理解PHP的分頁呢,我覺得PHP的分頁很難學。 有沒有老師,給講一下分頁的原理和如何理解分頁呢。

echo "共 $num 條<a href=$url?page=0>首頁</a> <a href=$url?page=".($pageval-1).">上一頁</a> <a href=$url?page=".($pageval+1).">下一頁</a><a href=$url?page=".ceil($num/$pagesize).">尾頁</a>";

首頁的頁碼當然是0了 ceil取整.如果有小數+1..ceil($num/$pagesize)得到尾頁頁碼 差不多就是這樣了 不過我沒測試過 你試試吧
另外,團IDC網上有許多產品團購,便宜有口碑

10. php分頁問題,知道的進

<?
function genpage(&$sql,$page_size=2)
{
//$prepage:上一頁頁碼;$nextpage:下一頁頁碼;$pages:總頁數;$sums:記錄總數
global $prepage,$nextpage,$pages,$sums; //out param
//獲得要顯示的頁碼
$page = $_GET["page"];
//每頁顯示記錄數
$eachpage = $page_size;
====================================
$pagesql = strstr($sql," from ");
$pagesql = "select count(*) as ids ".$pagesql;
$result = mysql_query($pagesql) or die(mysql_error());
if($rs = mysql_fetch_array($result)) $sums = $rs[0];
=============================================
//上面標記段是查資料庫,統計總共多少條記錄
$pages = ceil(($sums-0.5)/$eachpage)-1; //獲得總頁數
$pages = $pages>=0?$pages:0; //對總頁數進行安全處理,頁數最少要是0
$prepage = ($page>0)?$page-1:0; //如果當前頁碼大於0,則前一頁為當前頁碼減一,要避免讓前一頁頁碼出現負值
$nextpage = ($page<$pages)?$page+1:$pages; //同$prepage
$startpos = $page*$eachpage; //算出記錄開始位置,也就是從哪條記錄開始取
$sql .=" limit $startpos,$eachpage "; //limit用法網上查,不再解釋
}
//顯示分頁
function showpage()
{
global $page,$pages,$prepage,$nextpage,$queryString; //param from genpage function
$shownum =10/2;
$startpage = ($page>=$shownum)?$page-$shownum:0;
$endpage = ($page+$shownum<=$pages)?$page+$shownum:$pages;

echo "共".($pages+1)."頁: ";
if($page>0)echo "<a href=$PHP_SELF?page=0&$queryString>首頁</a>";
if($startpage>0)
echo " ... <b><a href=$PHP_SELF?page=".($page-$shownum*2)."&$queryString>«</a></b>";
for($i=$startpage;$i<=$endpage;$i++)
{
if($i==$page) echo " <b>[".($i+1)."]</b> ";
else echo " <a href=$PHP_SELF?page=$i&$queryString>".($i+1)."</a> ";
}
if($endpage<$pages)
echo "<b><a href=$PHP_SELF?page=".($page+$shownum*2)."&$queryString>»</a></b> ... ";
if($page<$pages)
echo "<a href=$PHP_SELF?page=$pages&$queryString>尾頁</a>";

}
?>
前台里的代碼是處理什麼時候顯示首頁,上一頁,下一頁,尾頁等情況,網上有現成的分頁類,比這個要好!分頁無非處理好那幾個變數就行

熱點內容
釘鼎伺服器出口ip 發布:2025-05-15 07:13:08 瀏覽:279
移動硬碟和光碟哪個存儲時間長 發布:2025-05-15 07:04:25 瀏覽:489
壓縮一定 發布:2025-05-15 06:57:30 瀏覽:289
進棧演算法 發布:2025-05-15 06:56:02 瀏覽:215
安卓和緩存 發布:2025-05-15 06:56:02 瀏覽:428
筆記本電腦台式伺服器 發布:2025-05-15 06:40:41 瀏覽:109
4k無壓縮 發布:2025-05-15 06:02:54 瀏覽:75
hp存儲6350 發布:2025-05-15 05:40:41 瀏覽:233
怎麼更改電腦默認緩存位置 發布:2025-05-15 05:39:01 瀏覽:877
安卓qq公孫離在哪個戰區戰力最低 發布:2025-05-15 05:38:58 瀏覽:494