真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php數(shù)據(jù)分頁實現(xiàn)原理 php數(shù)據(jù)分頁實現(xiàn)原理圖

php分頁原理,懂得的指教一下哈!

分頁的原理在所有的WEB語言幾乎都是差不多的!下面我來說說吧

創(chuàng)新互聯(lián)公司企業(yè)建站,十多年網(wǎng)站建設(shè)經(jīng)驗,專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計,有多年建站和網(wǎng)站代運營經(jīng)驗,設(shè)計師為客戶打造網(wǎng)絡(luò)企業(yè)風格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于網(wǎng)站建設(shè)、做網(wǎng)站中不同領(lǐng)域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調(diào)研,為客戶提供的解決方案。

如果你能好好研究我寫的東西,分頁將不再是問題

分頁有兩種情況

一、文件數(shù)據(jù)的分頁

二、數(shù)據(jù)庫數(shù)據(jù)的分頁

其中數(shù)據(jù)庫數(shù)據(jù)的分頁用得最多,原理也是差不多,只不過獲得數(shù)據(jù)的方法不同。

下面主要說一下數(shù)據(jù)庫數(shù)據(jù)的分頁

首先我們要明白見個量

a、頁面上要顯示的鏈接數(shù)$links(我們這里討論的不是只有上一頁和下一頁的情形,我們討論百度圖片中的分頁效果)

b、每一頁要顯示的記錄數(shù)$page_messages即一頁中顯示的數(shù)據(jù)的多少

c、當前的頁碼$page

d、數(shù)據(jù)庫中總的記錄數(shù)(不是必要,但是為保證生成分頁條正確,我們也應(yīng)該考慮)

有了上面的四個量我們就可以通過他們得出分頁條的開始頁碼和結(jié)束頁碼,以及

select * from tables where fields=value limit offset,numbers中的offset和numbers

其中offset=($page-1)*$page_messages

numbers=$page_messages

其次,我們要明白在點擊分頁條中的鏈接時我們應(yīng)該將相應(yīng)的頁碼傳遞到后臺去

即$page傳遞PHP文件,通過它來動態(tài)的生成offset,重新從數(shù)據(jù)中讀取數(shù)據(jù)

最后,在模板文件中或者直接在HTML中通過循環(huán)控制語句,將數(shù)據(jù)顯示出來

分頁條中頁碼的計算須要考慮多方面,這里不做詳述,我會在最后給你一個分頁的源碼,由于這個分頁的源碼是用面向?qū)ο髮懙?,所以有點難,不過你只需會用這個類的最后一個方法理解它的每一個參數(shù)就可以實現(xiàn)分頁.

這個分布類用到一個數(shù)據(jù)操作類所以一并給出

?php

header("content-type:text/html;charset=utf-8");

class DB{

static private $obj = null;

static private $db_link = null;

static private $dbhost;//數(shù)據(jù)庫服務(wù)器地址

static private $dbuser;//數(shù)據(jù)庫用戶名

static private $dbpass;//數(shù)據(jù)庫密碼

static private $dbname;//數(shù)據(jù)庫名

static private $dbcharset;//數(shù)據(jù)庫編碼

static public function ConstZhi($host,$user,$password,$dbname,$dbcharset){

self::$dbhost=$host;

self::$dbuser=$user;

self::$dbpass=$password;

self::$dbname=$dbname;

self::$dbcharset=$dbcharset;

}

static public function Instance(){

if ( null == self::$obj ){

$class = __CLASS__;

self::$obj = new $class;

}

return self::$obj;

}

function __construct(){

self::$db_link=mysql_connect(self::$dbhost,self::$dbuser,self::$dbpass);

@mysql_select_db(self::$dbname, self::$db_link ) or die("數(shù)據(jù)庫名錯誤,請查正!".mysql_error());

@mysql_query( 'SET NAMES '.self::$dbcharset,self::$db_link ) or die("編碼設(shè)置錯誤".mysql_error());

}

function __destruct(){

self::Close();

}

static public function Close(){

if ( is_resource( self::$db_link ) ){

@mysql_close( self::$db_link );

}

self::$db_link = null;

self::$obj = null;

}

static public function EscapeString( $string ){

self::Instance();

return @mysql_real_escape_string( $string, self::$db_link );

}

static public function GetInsertId(){

self::Instance();

return intval( @mysql_insert_id(self::$db_link) );

}

static public function Query( $sql ){

self::Instance();

$result = @mysql_query( $sql, self::$db_link );

if ( $result ){

return $result;

}

self::Close();

return false;

}

static public function doInsert( $table , $arr1 ){

$sql_fd = '';

$sql_v = '';

foreach ( $arr1 as $k = $v ) {

$sql_fd .= ", `$k` ";

$sql_v .= ", '".self::EscapeString( $v )."' ";

}

$sql_fd = '('.trim( $sql_fd , ',' ).')';

$sql_v = '('.trim($sql_v , ',').')';

$sql = "INSERT INTO `$table` ".$sql_fd.' VALUES '.$sql_v;

if ( mysql_query($sql) ) {

return mysql_insert_id();

}

return false;

}

static public function doDelete( $table , $val , $fd = 'id' ) {

self::Instance();

$sql = "DELETE FROM `$table` WHERE `$fd` = ".self::EscapeString($val) ;

return self::Query( $sql , self::$db_link );

}

/**

* doDeleteXu() made by xudianyang

* */

static public function doDeleteXu( $table , $val , $fd = 'id' ) {

self::Instance();

$sql = "DELETE FROM `$table` WHERE `$fd` = ".$val;

return self::Query( $sql , self::$db_link );

}

//UPDATE `sina`.`sohu_url` SET `state` = '1' WHERE `sohu_url`.`id` =1 LIMIT 1 ;

static public function doUpdate( $table , $arr1 , $arr2 ){

self::Instance();

$sql_set = '';

foreach ( $arr2 as $k = $v ) {

$sql_set .= ", `$k` = '".self::EscapeString($v)."' ";

}

$sql_set = trim( $sql_set , ',' );

$arr_w = array();

foreach ( $arr1 as $k = $v ){

$arr_w[] = " `".self::EscapeString($k)."` = '".self::EscapeString($v)."' ";

}

$sql = "UPDATE `$table` SET $sql_set WHERE ".implode('and' , $arr_w);

if ( self::Query($sql) )

return true;

return false;

}

static public function getRows( $table , $arr=array() , $one = 0 ) {

self::Instance();

if ( empty($arr) ){

$sql = "SELECT * FROM `$table`";

}else{

$arr_w = array();

foreach ( $arr as $k = $v ){

if(is_numeric($v))

$arr_w[] = " `".self::EscapeString($k)."` = ".self::EscapeString($v);

else

$arr_w[] = " `".self::EscapeString($k)."` = '".self::EscapeString($v)."' ";

}

$sql = "SELECT * FROM `$table` WHERE ".implode(' and' , $arr_w)." ORDER BY `id` ASC";

//echo $sql ;

}

if ( $ret = self::Query($sql) ){

if ( $one ){

return mysql_fetch_assoc( $ret );

}else{

$arr_out = array();

while( $row = mysql_fetch_assoc( $ret ) ){

$arr_out[] = $row;

}

return $arr_out;

}

}

return false;

}

static private function makeWhere( $arr ){

$arr_w = array();

foreach ( $arr as $k = $v ){

$arr_w[] = " `".self::EscapeString($k)."` = '".self::EscapeString($v)."' ";

}

return implode('and' , $arr_w);

}

static public function getCount( $table , $arr ){

if ( is_array($arr) and count($arr) 0 ) {

$sql = "SELECT COUNT(*) n FROM `$table` WHERE ". self::makeWhere($arr);

if ( $ret = self::Query($sql) ){

$tmep = mysql_fetch_assoc( $ret );

return $tmep['n'];

}

}

return false;

}

/**

* getCountXu() made by xudianyang

* */

static public function getCountXu( $table , $arr ){

$sql = "SELECT COUNT(*) n FROM `$table`" ;

if ( $ret = self::Query($sql) ){

$tmep = mysql_fetch_assoc( $ret );

return $tmep['n'];

}

return false;

}

static public function getQueryResult( $sql, $one=false ){

$ret = array();

if ( $result = self::Query($sql) ){

while ( $row = mysql_fetch_assoc($result) ){

//$row = array_change_key_case($row, CASE_LOWER);

if ( $one ){

$ret = $row;

break;

}else{

array_push( $ret, $row );

}

}

@mysql_free_result( $result );

}

return $ret;

}

}

可以在類中配置你自己的數(shù)據(jù)庫服務(wù)器相應(yīng)的賬號和密碼

?php

class Fenye{

private $mDB;

public function __construct(DB $obj){

$this-mDB=$obj;

}

/**

* 計算總共的頁數(shù)

*

* @param string $table 表名

* @param array $conditon 查詢的條件

* @param integer $message_number 每頁顯示的記錄數(shù)

* @return array */

public function getPageAll($table,$condition,$message_number){

if($condition == ""){

$recodernum=$this-mDB-getCountXu($table,$condition);

}else{

$recodernum=$this-mDB-getCount($table,$condition);

}

$arrnumber['all']=$recodernum;

$arrnumber['page_all']= ceil($recodernum/$message_number);

return $arrnumber;

}

/**

* 生成查詢的SQL語句

*

*@param string $table 需要查詢的表

*@param array $conditon 查詢的條件

*@param array $arr 查詢的字段所組成的一個數(shù)組

*@param mixed $order 表示排序方式

*@param array $limit 表示指定查詢記錄的數(shù)目

*@return string

**/

public function createSQL($table,$condition,$arr,$order,$limit){

if ($table == ""){

return false;

}else{

$str1="";

$str2="";

$str3="";

$str4="";

$n=0;

$m=0;

$p=0;

if ($arr == ""){

$str1="*";

}else{

foreach ($arr as $value){

$p++;

if ($p == 1){

$str1.=$value;

}else{

$str1.=",".$value;

}

}

}

if($condition == ""){

$str2="";

}else{

foreach ($condition as $key = $value){

$n++;

if ($n == 1){

$str2.="where ".$key."="."'".$value."'";

}else{

$str2.=" and ".$key."="."'".$value."'";

}

}

}

if($order == ""){

$str3="";

}else{

foreach ($order as $key = $value){

$m++;

if ($m == 1){

$str3.=" order by ".$key." ".$value;

}else{

$str3.=",".$key." ".$value;

}

}

}

if ($limit == ""){

$str4="";

}else{

$str4="limit ".$limit[0].",".$limit[1];

}

$sql="select ".$str1." from ".$table." ".$str2.$str3." ".$str4;

}

return $sql;

}

/**

*獲取當前頁面應(yīng)有的信息

*

*@param integer $page 當前的頁碼

*@param integer $message_number 每頁顯示的記錄數(shù)

*@param integer $pageall 總共的頁數(shù)

*@param string $sql 待執(zhí)行的SQL語句

*@return array

*/

public function getPageInformation($page,$page_all,$message_number,$sql){

$start=0;//開始的頁碼

$end=0;//結(jié)束的頁碼

$arr=array();//返回的結(jié)果儲存在這個數(shù)組中

$left=intval($message_number/2);

$start=$page-$left;

$end=$page+$left;

if($message_number = $page_all){//判斷總的頁數(shù)是否大于每一頁的鏈接數(shù)

if($end = $message_number){

$end=$message_number;

}

}else{

$end=$page_all;

}

if($start = 0){

$start=1;

}

if($end = $page_all){

$start=$page_all-$message_number+1;

if($start = 0){

$start=1;

}

$end=$page_all;

}

if($page 1){

$page=1;

$start=1;

if($page_all = $message_number){

$end=$page_all;

}

$end=$message_number;

}

if($page = $page_all){

$page=$page_all;

$start=$page-$message_number+1;

if($start = 0){

$start=1;

}

$end=$page;

}

$result=$this-mDB-Query($sql);

if($result){

for(;;){

$zhi=mysql_fetch_assoc($result);

if($zhi){

$arr1[]=$zhi;

}else{

break;

}

}

}

$arr['start']=$start;

$arr['end']=$end;

$arr['page_all']=$page_all;

$arr['page']=$page;

$arr['content']=@ $arr1;

return $arr;

}

/**

* 修改傳遞的頁碼使其合法

*

* @param integer $page 傳遞過來的頁碼

* @param integer $page_all 總的頁碼

* @return integer*/

public function checkPage($page,$page_all){

if($page 1){

$page=1;

}

if($page = $page_all){

$page=$page_all;

}

return $page;

}

/**

* 生成分頁條

*

* @param integer $page 當前頁碼

* @param integer $start 分頁條開始頁碼

* @param integer $end 分頁條結(jié)束的頁碼

* @param integer $page_all 總共頁碼數(shù)

* @param string $otherquery 需要傳遞的其他參數(shù) 如string=Publisher

* @return string

* */

public function createFenYeTiao($page,$start,$end,$page_all,$otherquery=''){

$str="";

if($page == 1){

$str.='首頁'." ".'上一頁'." ";

}else{

$str.="a href='?page=1".$otherquery."' target='_self'".'首頁'."/a"." ";

$str.="a href='?page=".($page-1).$otherquery."' target='_self'".'上一頁'."/a"." ";

}

for($i=$start;$i=$end;$i++){

if($page == $i){

$str.="a href='?page=".$page.$otherquery."' target='_self'".$page."/a"." ";

}else{

$str.="a href='?page=".$i.$otherquery."' target='_self'[".$i."]/a"." ";

}

}

if($page == $page_all){

$str.='下一頁'." ".'尾頁';

}else{

$str.="a href='?page=".($page+1).$otherquery."' target='_self'".'下一頁'."/a"." ";

$str.="a href='?page=".$page_all.$otherquery."' target='_self'".'尾頁'."/a"." ";

}

return $str;

}

/**

* 完成分頁所有操作

*

*@param string $table 需要查詢的表

*@param array $conditon 查詢的條件

*@param array $arrField 查詢的字段所組成的一個數(shù)組

*@param mixed $order 表示排序方式

*@param integer $page 當前頁碼

*@param integer $mess_num 每頁顯示的記錄數(shù)

*@param integer $page_link 顯示的鏈接數(shù)目

*@param string $otherquery 點擊分頁頁碼時需要傳遞的其他參數(shù),默認為空

*@return array 包括分頁條和從數(shù)據(jù)庫讀得的數(shù)據(jù)分別保存在索引為content和fenyetiao的兩個元素中,注意

*索引為content的元素為一個二維數(shù)組*/

public function FinishFenYe($table,$condition,$arrField,$order,$page,$mess_num,$page_link,$otherquery){

$allnumber=$this-getPageAll($table,"",$mess_num);

$page_all=$allnumber['page_all'];

$page=$this-checkPage($page,$page_all);

$limitoffet=($page-1)*$mess_num;

$limit=array($limitoffet,$mess_num);

$sql=$this-createSQL($table,$condition,$arrField,$order,$limit);

$resarr=$this-getPageInformation($page,$page_all,$page_link,$sql);

$resarr['page']=$this-checkPage($resarr['page'],$resarr['page_all']);

$fenyetiao=$this-createFenYeTiao($resarr['page'],$resarr['start'],$resarr['end'],$resarr['page_all'],$otherquery);

$resarr['fenyetiao']=$fenyetiao;

$resarr['all']=$allnumber['all'];

return $resarr;

}

}

?

祝你成功!

php 長文章怎么在顯示時實現(xiàn)分頁

有種偷懶的做法。就是文章太長。就是顯示一段,隱藏另外段落。

文章在后臺發(fā)布肯定是通過WEB編輯器進行的,對吧!你可以在編輯器上增加文章分頁顯示功能。具體的原理是這樣的,你在想要分頁的地方插入你自己定義的標記符號比如#page#,插入到數(shù)據(jù)庫中的HTML代碼中就會有這樣的#page#的代碼。在前臺看的時候,通過程序處理。把文字HTML中有#page#這樣的東西。進行下翻譯成文章分頁即可!有幾個#page#就可以判斷在當初在后臺設(shè)置過分幾頁顯示。生成一段JS代碼、控制DIV的顯示隱藏就可以實現(xiàn)分頁效果。

PHP里生成分頁的原理和代碼。高手幫下忙!MYSQL數(shù)據(jù)庫!

看看那個limit,分頁程序主要是用sql的limit實現(xiàn),網(wǎng)上php分頁類很多,就不粘了

原理是這樣:

用sql語句查詢后得到所有的記錄條數(shù);

根據(jù)每頁顯示的條數(shù)得到總共有多少頁數(shù);

通過url就是get得到當前第幾頁;

根據(jù)當前頁數(shù)和每頁顯示的條數(shù)得到當前頁顯示的數(shù)據(jù)的起始條數(shù)start_num和結(jié)束條數(shù)end_num;

最后 select * from talbel where 條件 limit start_num,end_num;

這時得到的結(jié)果就是當前頁需要顯示的內(nèi)容,循環(huán)輸出就行了


分享標題:php數(shù)據(jù)分頁實現(xiàn)原理 php數(shù)據(jù)分頁實現(xiàn)原理圖
分享網(wǎng)址:http://weahome.cn/article/doggpee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部