导航:首页 > 编程语言 > phptable页

phptable页

发布时间:2024-11-30 22:01:55

A. php鍒嗛〉鏄剧ず鍒朵綔璇﹁В

銆銆 鍓嶈█

銆銆鍒嗛〉鏄剧ず鏄涓绉嶉潪甯稿父瑙佺殑娴忚埚拰鏄剧ず澶ч噺鏁版嵁镄勬柟娉 灞炰簬web缂栫▼涓链甯稿勭悊镄勪簨浠朵箣涓 瀵逛簬web缂栫▼镄勮佹坠𨱒ヨ 缂栧啓杩欑崭唬镰佸疄鍦ㄦ槸鍜屽懠钖镐竴镙疯嚜铹 浣嗘槸瀵逛簬鍒濆﹁呮潵璇 甯稿父瀵硅繖涓闂棰樻懜涓嶈宪澶寸华 锲犳ょ壒鍦版挵鍐欐ゆ枃瀵硅繖涓闂棰樿繘琛岃︾粏镄勮茶В 锷涙眰璁╃湅瀹岃繖绡囨枃绔犵殑链嫔弸鍦ㄧ湅瀹屼互钖庡逛簬鍒嗛〉鏄剧ず镄勫师鐞嗗拰瀹炵幇鏂规硶链夋墍浜呜В 链鏂囬傚悎鍒濆﹁呴槄璇 镓链夌ず渚嬩唬镰佸潎浣跨敤php缂栧啓

銆銆 铡熺悊

銆銆镓璋揿垎椤垫樉绀 涔熷氨鏄灏嗘暟鎹搴扑腑镄勭粨鏋滈泦浜轰负镄勫垎鎴愪竴娈典竴娈电殑𨱒ユ樉绀 杩欓噷闇瑕佷袱涓鍒濆嬬殑鍙傛暟

銆銆姣忛〉澶氩皯𨱒¤板綍($PageSize)?

銆銆褰揿墠鏄绗鍑犻〉($CurrentPageID)?

銆銆鐜板湪鍙瑕佸啀缁欐垜涓涓缁撴灉闆 鎴戝氨鍙浠ユ樉绀烘煇娈电壒瀹氱殑缁撴灉鍑烘潵

銆銆镊充簬鍏朵粬镄勫弬鏁 姣斿 涓娄竴椤($PReviousPageID) 涓嬩竴椤($NextPageID) 镐婚〉鏁($numPages)绛夌瓑 閮藉彲浠ユ牴鎹鍓嶈竟杩椤嚑涓涓滆タ寰楀埌

銆銆浠MySQL鏁版嵁搴扑负渚 濡傛灉瑕佷粠琛ㄥ唴鎴鍙栨煇娈靛唴瀹 sql璇鍙ュ彲浠ョ敤 select * from table limit offset rows 鐪嬬湅涓嬮溃涓缁剆ql璇鍙 灏濊瘯涓涓嫔彂鐜板叾涓镄勮勭巼

銆銆鍓 𨱒¤板綍 select * from table limit

銆銆绗 镊 𨱒¤板綍 select * from table limit

銆銆绗 镊 𨱒¤板綍 select * from table limit

銆銆钬︹

銆銆杩欎竴缁剆ql璇鍙ュ叾瀹炲氨鏄褰$PageSize= 镄勬椂鍊椤彇琛ㄥ唴姣忎竴椤垫暟鎹镄剆ql璇鍙 鎴戜滑鍙浠ユ荤粨鍑鸿繖镙蜂竴涓妯℃澘

銆銆select * from table limit ($CurrentPageID ) * $PageSize $PageSize

銆銆𨰾胯繖涓妯℃澘浠e叆瀵瑰簲镄勫煎拰涓婅竟闾d竴缁剆ql璇鍙ュ圭収涓涓嬬湅鐪嬫槸涓嶆槸闾d箞锲炰簨 鎼炲畾浜嗘渶閲嶈佺殑濡备綍銮峰彇鏁版嵁镄勯梾棰树互钖 鍓╀笅镄勫氨浠呬粎鏄浼犻掑弬鏁 鏋勯犲悎阃傜殑sql璇鍙ョ劧钖庝娇鐢╬hp浠庢暟鎹搴揿唴銮峰彇鏁版嵁骞舵樉绀轰简 浠ヤ笅鎴戝皢鐢ㄥ叿浣扑唬镰佸姞浠ヨ存槑

銆銆 绠鍗曚唬镰

銆銆璇疯︾粏阒呰讳互涓嬩唬镰 镊宸辫皟璇曡繍琛屼竴娆 链濂芥妸瀹冧慨鏀逛竴娆 锷犱笂镊宸辩殑锷熻兘 姣斿傛悳绱㈢瓑绛

銆銆 <?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 .($page-1).'>涓娄竴椤</a>|' }

銆銆if( ($page == $page_count) || ($page_count == 0) ){

銆銆$page_string .= '涓嬩竴椤祙灏鹃〉'

銆銆}

銆銆else{

銆銆$page_string .= '<a .($page+1).'>涓嬩竴椤</a>|<a .$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();

銆銆}

銆銆// 娌℃湁鍖呭惈鏄剧ず缁撴灉镄勪唬镰侊纴闾d笉鍦ㄨㄨ鸿寖锲达纴鍙瑕佺敤foreach灏卞彲浠ュ緢绠鍗旷殑鐢ㄥ缑鍒扮殑浜岀淮鏁扮粍𨱒ユ樉绀虹粨鏋

銆銆?>

銆銆4銆丱O椋庢牸浠g爜

銆銆浠ヤ笅浠g爜涓镄勬暟鎹搴撹繛鎺ユ槸浣跨敤镄刾ear 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;

銆銆}

銆銆/***

銆銆*

銆銆* 杩斿洖缁撴灉闆嗙殑鏁版嵁搴撹繛鎺

銆銆* 鍦ㄧ粨鏋滈泦姣旇缉澶х殑镞跺椤彲浠ョ洿鎺ヤ娇鐢ㄨ繖涓鏂规硶銮峰缑鏁版嵁搴撹繛鎺ワ纴铹跺悗鍦ㄧ被涔嫔栭亶铡嗭纴杩欐牱寮阌杈冨皬

銆銆* 濡傛灉缁撴灉闆嗕笉鏄寰埚ぇ锛屽彲浠ョ洿鎺ヤ娇鐢╣etPageData镄勬柟寮忚幏鍙栦簩缁存暟缁勬牸寮忕殑缁撴灉

銆銆* 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

銆銆// 杩欐槸涓娈电亩鍗旷殑绀轰緥浠g爜锛屽墠杈圭渷鐣ヤ简浣跨敤pear db绫诲缓绔嬫暟鎹搴撹繛鎺ョ殑浠g爜

銆銆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 ?page=1&numItems=".$pager->numItems."'>棣栭〉</a>|<a ?page=".$pager->PreviousPageID."&numItems=".$pager->numItems."'>涓娄竴椤</a>|"; }

銆銆if ( $pager->isLastPage )

銆銆{

銆銆$turnover .= "涓嬩竴椤祙灏鹃〉";

銆銆}

銆銆else

銆銆{

銆銆$turnover .="<a ?page=".$pager->NextPageID."&numItems=".$pager->numItems."'>涓嬩竴椤</a>|<a ?page=".$pager->numPages."&numItems=".$pager->numItems."'>灏鹃〉</a>"; }

銆銆?>

銆銆闇瑕佽存槑镄勫湴鏂规湁涓や釜锛

銆銆杩欎釜绫讳粎浠呭勭悊鏁版嵁锛屽苟涓嶈礋璐e勭悊鏄剧ず锛屽洜涓烘垜瑙夊缑灏嗘暟鎹镄勫勭悊鍜岀粨鏋灭殑鏄剧ず閮芥斁鍒颁竴涓绫婚噷杈瑰疄鍦ㄦ槸链変簺鍕夊己銆俆w.wINgWIT鏄剧ず镄勬椂鍊欐儏鍐靛拰瑕佹眰澶氩彉锛屼笉濡傝嚜宸辨牴鎹绫荤粰鍑虹殑缁撴灉澶勭悊锛屾洿濂界殑鏂规硶鏄镙规嵁杩欎釜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

銆銆......

lishixin/Article/program/PHP/201311/21304

B. 深入PHP中的HashTable结构详解

深入PHP中的HashTable结构详解

深入PHP中的HashTable结构详解

对php内核有一定了解的人应该都知道php的精髓就是HashTable,HashTable在php的实现中无处不在。包括php的数组、什么全局变量、局部变量的作用域等等,php的hashtable拆开来说就是四部分:

hash函数:用的是time33的散列函数,将一个字符串的key转换成一个数字

一个C数组:用来储存桶(buckets)的

两个双向的链表:第一个双向链表是数组的每个元素(桶bucket)是一个双向链表,这样做是为了解决hash冲突;第二个双向链表是数组将每一个桶(bucket)连接起来,这里要连接的也就是第一个双向链表的链表头,这样做是为了遍历整个hash表用的,鸟哥有篇blog是讲php的foreach的,这里这样设计就是给foreach用的==>《深入理解PHP之数组(遍历顺序)》

我这里不再说hashtable的struct和bucket的`struct了,因为下面的推荐链接几乎都讲了,我不觉得我能描述和说的比他们好,每个人的水平不一样,我就以我现在的技术水平来描述,所以我就只把我整理的一些东西记录一下

下面是php中hash实现的两个文件:zend_hash.c zend_hash.h。这两个文件里面实现了一堆的api,也引申出了一堆的api,下面是实现出来的api的原型

复制代码 代码如下:

ZEND_API ulong zend_hash_func(const char *arKey, uint nKeyLength)

ZEND_API ulong zend_get_hash_value(const char *arKey, uint nKeyLength)

ZEND_API int _zend_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, zend_bool persistent ZEND_FILE_LINE_DC)

ZEND_API void zend_hash_set_apply_protection(HashTable *ht, zend_bool bApplyProtection)

ZEND_API int _zend_hash_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)

ZEND_API int _zend_hash_quick_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)

ZEND_API int _zend_hash_index_update_or_next_(HashTable *ht, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)

ZEND_API int zend_hash_rehash(HashTable *ht)

static int zend_hash_do_resize(HashTable *ht)

ZEND_API int zend_hash_del_key_or_index(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, int flag)

ZEND_API void zend_hash_destroy(HashTable *ht)

ZEND_API void zend_hash_clean(HashTable *ht)

static Bucket *zend_hash_apply_r(HashTable *ht, Bucket *p)

ZEND_API void zend_hash_graceful_destroy(HashTable *ht)

ZEND_API void zend_hash_graceful_reverse_destroy(HashTable *ht)

ZEND_API void zend_hash_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC)

ZEND_API void zend_hash_apply_with_argument(HashTable *ht, apply_func_arg_t apply_func, void *argument TSRMLS_DC)

ZEND_API void zend_hash_apply_with_arguments(HashTable *ht TSRMLS_DC, apply_func_args_t apply_func, int num_args, …)

ZEND_API void zend_hash_reverse_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC)

ZEND_API void zend_hash_(HashTable *target, HashTable *source, _ctor_func_t pCopyConstructor, void *tmp, uint size)

ZEND_API void _zend_hash_merge(HashTable *target, HashTable *source, _ctor_func_t pCopyConstructor, void *tmp, uint size, int overwrite ZEND_FILE_LINE_DC)

static zend_bool zend_hash_replace_checker_wrapper(HashTable *target, void *source_data, Bucket *p, void *pParam, merge_checker_func_t merge_checker_func)

ZEND_API void zend_hash_merge_ex(HashTable *target, HashTable *source, _ctor_func_t pCopyConstructor, uint size, merge_checker_func_t pMergeSource, void *pParam)

ZEND_API int zend_hash_find(const HashTable *ht, const char *arKey, uint nKeyLength, void **pData)

ZEND_API int zend_hash_quick_find(const HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void **pData)

ZEND_API int zend_hash_exists(const HashTable *ht, const char *arKey, uint nKeyLength)

ZEND_API int zend_hash_quick_exists(const HashTable *ht, const char *arKey, uint nKeyLength, ulong h)

ZEND_API int zend_hash_index_find(const HashTable *ht, ulong h, void **pData)

ZEND_API int zend_hash_index_exists(const HashTable *ht, ulong h)

ZEND_API int zend_hash_num_elements(const HashTable *ht)

ZEND_API int zend_hash_get_pointer(const HashTable *ht, HashPointer *ptr)

ZEND_API int zend_hash_set_pointer(HashTable *ht, const HashPointer *ptr)

ZEND_API void zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos)

ZEND_API void zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_get_current_key_ex(const HashTable *ht, char **str_index, uint *str_length, ulong *num_index, zend_bool plicate, HashPosition *pos)

ZEND_API int zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_get_current_data_ex(HashTable *ht, void **pData, HashPosition *pos)

ZEND_API int zend_hash_update_current_key_ex(HashTable *ht, int key_type, const char *str_index, uint str_length, ulong num_index, int mode, HashPosition *pos)

ZEND_API int zend_hash_sort(HashTable *ht, sort_func_t sort_func, compare_func_t compar, int renumber TSRMLS_DC)

ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t compar, zend_bool ordered TSRMLS_DC)

ZEND_API int zend_hash_minmax(const HashTable *ht, compare_func_t compar, int flag, void **pData TSRMLS_DC)

ZEND_API ulong zend_hash_next_free_element(const HashTable *ht)

void zend_hash_display_pListTail(const HashTable *ht)

void zend_hash_display(const HashTable *ht)

;

C. 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程序员的帮助。

D. PHP显示很多数据库信息,如何自动分页呢代码

PHP代码如下:

/*

Author:默默
Date :2006-12-03

*/

$page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10; //每页显示10条数据

$db=mysql_connect("host","name","pass"); //创建数据库连接
$select=mysql_select_db("db",$db); //选择要操作的数据库

/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据数除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/

$total=mysql_num_rows(mysql_query("select id from table")); //查询数据的总数,id是数据库中的一个自动赋值的字段
$pagenum=ceil($total/$num); //获得总页数

//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum || $page == 0){
Echo "Error : Can Not Found The page .";
Exit;
}

$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。

$info=mysql_query("select name from table limit $offset,$num"); //获取相应页数所需要显示的数据,name是数据里的一个字段
While($it=mysql_fetch_array($info)){
Echo $it['name']."
";
} //显示数据

For($i=1;$i<=$pagenum;$i++){

$show=($i!=$page)?"$i":"$i";
Echo $show." ";
}

/*显示分页信息,假如是当页则显示粗体的数字,其余的页数则为超连接,假如当前为第三页则显示如下
1 2 3 4 5 6
*/
?>

E. 怎么在PHP网页上点击数据出现文本框并可以修改和提交,用AJAX把数据更新到数据库同时刷新页面,求代码

//这个正好手头正在做的一个项目中用到,提供思路,可以自由扩充
//在页面加载的时候注册一下,就是给要点击的地方添加事件或者是属性
//页面源码
<table>
<tr>
<tdclass="canChange">点击这里会出现文本框</td>
</tr>
</table>

//JS
$(document).ready(function(){
td_Click();
})

//点击事件
functiontd_Click(){
$(".canChange").click(function(){
vartd=$(this);
//所点文本框的id
varid=$(this).attr("id")
vartxt=$.trim(td.text());

varinput=$("<inputclass="myinput"id='new'type='text'value='"+txt+"'style="width:80%;heigth:100%;"/>");
td.html(input);
input.click(function(){returnfalse;});
//获取焦点
input.trigger("focus");
//文本框失去焦点后提交内容,重新变为文本
input.blur(function(){
//varnewtxt=$(this).val();
varnewtxt=$("#new").val();
//判断文本有没有修改
if(newtxt!=txt){
if(newtxt==null||newtxt==""){
td.html(txt);
}
else{
//表示已经修改
$.post(.......)//提交
td.html(newtxt);
}
}
else{
td.html(txt);
}
});
});
}

刷新页面可以通过JQ的Fresh方法来实现,
或者是是控件刷新来实现,
比如$("#btnSearch").click();这样通过JQ调用按钮点击,实现重新读取数据

=================望采纳!

F. 求写个比较简单的php登陆页面代码

主页面:index.php <form name="form1" action="login.php" method="post" onsubmit="return check()"><!--这里注意onclick的用法-->
账号:<input name="adminAccount" type="text" />

密码:<input type="password" name="adminPass" />

输入验证码:<input type="text" name="validate" />
< br />
<input type="submit" value="登陆" /><input type="reset" value="重置">
</form>判断页面:login.php<?php
//再连库判断账号密码
require_once("../inc/dbconfig.php");
$adminAccount=$_POST['adminAccount'];
$adminPass=md5($_POST['adminPass']);
$sql="select * from admin where adminAccount='$adminAccount' and adminPass='$adminPass'";
$result=mysql_query($sql) or die($sql);
$rows=mysql_num_rows($result);
if($rows==0){
?>
<script language="javascript">
alert("管理员账号密码错误!");
window.location="index.php";
</script>
<?
exit();
}
//将管理员账号赋值给session
$_SESSION['adminAccount']=$adminAccount;
?>
<script language="javascript">
window.location="command.php";
</script>配置文件自己来就行了!

G. php怎么把jsp页面的table导出excel

导出一般都是从前台拿到限定条件,然后去后台运用JXL或POI或FREEMAKER等工具类导出为Excel
导出一般都是从前台拿到限定条件,然后去后台运用JXL或POI或FREEMAKER等工具类导出为Excel

阅读全文

与phptable页相关的资料

热点内容
安卓怎么玩正版孤胆车神 浏览:887
不做程序员还能做什么 浏览:688
excel条件命令 浏览:404
autojs源文件加密 浏览:183
49算法虚岁年龄怎么算 浏览:547
qq发图片压缩 浏览:948
期货行情手机app编程 浏览:53
中山纬创一厂做服务器是什么 浏览:28
python如何求字典里值的和 浏览:287
标准日本语pdf高清版 浏览:837
ide导出的二进制编译文件 浏览:969
程序员会引起颈椎病吗 浏览:63
cuda文件编译 浏览:3
为什么服务器费用这么高 浏览:977
编译错误什么原因 浏览:233
人民文学pdf下载 浏览:301
进外代理服务器地址 浏览:978
linux命令行mysql 浏览:210
pdf注释删除 浏览:354
同步器源码大漠 浏览:953