ホームページ >バックエンド開発 >PHPチュートリアル >ページネーションで最初と最後のページを追加する方法

ページネーションで最初と最後のページを追加する方法

WBOY
WBOYオリジナル
2016-06-23 13:40:462475ブラウズ

次のページング関数は最初のページと最後のページを計算しません
追加方法、少し混乱しています

/** * 分页函数 * * @param $num 信息总数 * @param $curr_page 当前分页 * @param $perpage 每页显示数 * @param $urlrule URL规则 * @param $array 需要传递的数组,用于增加额外的方法 * @return 分页 */function pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) {	if(defined('URLRULE') && $urlrule == '') {		$urlrule = URLRULE;		$array = $GLOBALS['URL_ARRAY'];	} elseif($urlrule == '') {		$urlrule = url_par('page={$page}');	}	$multipage = '';	if($num > $perpage) {		$page = $setpages+1;		$offset = ceil($setpages/2-1);		$pages = ceil($num / $perpage);		if (defined('IN_ADMIN') && !defined('PAGES')) define('PAGES', $pages);		$from = $curr_page - $offset;		$to = $curr_page + $offset;		$more = 0;		if($page >= $pages) {			$from = 2;			$to = $pages-1;		} else {			if($from <= 1) {				$to = $page-1;				$from = 2;			}  elseif($to >= $pages) {				$from = $pages-($page-2);				$to = $pages-1;			}			$more = 1;		}		$multipage .= '<a class="a1">'.$num.L('page_item').'</a>';		if($curr_page>0) {			$multipage .= ' <a href="'.pageurl($urlrule, $curr_page-1, $array).'" class="a1">'.L('previous').'</a>';//上一页功能			if($curr_page==1) {				$multipage .= ' <span>1</span>';			} elseif($curr_page>6 && $more) {				$multipage .= ' <a href="'.pageurl($urlrule, 1, $array).'">1</a>..';			} else {				$multipage .= ' <a href="'.pageurl($urlrule, 1, $array).'">1</a>';			}		}		for($i = $from; $i <= $to; $i++) {			if($i != $curr_page) {				$multipage .= ' <a href="'.pageurl($urlrule, $i, $array).'">'.$i.'</a>';			} else {				$multipage .= ' <span>'.$i.'</span>';			}		}		if($curr_page<$pages) {			if($curr_page<$pages-5 && $more) {				$multipage .= ' ..<a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" class="a1">'.L('next').'</a>';//下一页功能			} else {				$multipage .= ' <a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" class="a1">'.L('next').'</a>';			}		} elseif($curr_page==$pages) {			$multipage .= ' <span>'.$pages.'</span> <a href="'.pageurl($urlrule, $curr_page, $array).'" class="a1">'.L('next').'</a>';		} else {			$multipage .= ' <a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" class="a1">'.L('next').'</a>';		}	}	return $multipage;}


ディスカッションへの返信 (解決策)

最初のページと最後のページはまだ必要です1 はホームページ、$pages は最後のページです

まだホームページと lastpage を計算する必要がありますか? 1 はホームページ、$pages は最後のページです


主に、ホームページが表示されないため、たとえば、多くのページ番号が循環アウトされている場合、この番号 1 は配列で表す必要があります
この例では、最初のページ番号を表すために配列を使用する方法がわかりません。ページ番号
もちろん、どのページを表示するかだけではなく、リンクもあるので計算する必要があります

ここに書かれていませんか?
if($curr_page==1) {elseif($curr_page==$pages) {



ちなみに、私のページングコンポーネントにページ番号作成部分を投稿してください。アドバイスをお願いします

		function createPage(par){			var _page={};//存放运行中的页面信息			_page.extendpage=par.extendpage?par.extendpage:opt.extendpage;			_page.totalpage=par.totalpage;			//编制分页			var expbase=4;			_page.page=parseInt(par.page);	//用于解决js弱类型转换失败的问题			if(isNaN(_page.page) || isNaN(_page.totalpage)){				return;//分页错误,不进行操作			}			opt.renderTo.empty();			opt.renderTo.append('当前页码:'+par.page+' ');				//从头插入 create from begin			_page.pagenow=1;//初始化分页跟踪。			if(_page.page>=_page.extendpage-1){				_page.pagenow=1;				_createPage(_page,opt);			}				//插入中间的分页,即在之前的分页和当前的分页之间插入一些中间的分页			_page.start=_page.pagenow+1;			_page.end=_page.page-_page.extendpage-1;		//		//中间有空余位置,可以插入数据,使用随机或者什么其他的方式来插入中间页			var tarr=[];			for(var exppow=1;_page.start<_page.end-_mathexp(expbase,exppow);exppow++){				_page.pagenow=_page.end-_mathexp(expbase,exppow);				tarr.push(_page.pagenow);				//_createpage(par);			}			var tl=tarr.length;			for(var i=0;i<tl;i++){				_page.pagenow=tarr.pop();				_createPage(_page,opt);			}				//create left side extend			if(_page.pagenow<_page.page-_page.extendpage-1){				_page.pagenow=_page.page-_page.extendpage-1;			}			for(var i=_page.pagenow+1;i<_page.page;i++){				//在初始化i的时候pagenow要么是已经完成了的第一页,要么是后面的其他页,所以这里需要进行处理				_page.pagenow=i;				_createPage(_page,opt);			}				//插入当前页 insert page now			_page.pagenow=_page.page;			_page.isNow=true;			_createPage(_page,opt);			_page.isNow=false;				//插入当前页后面的扩展页 create right side extend			for(var i=1+_page.pagenow; (i<_page.totalpage) && i<(_page.page+_page.extendpage+1) ;i++){				_page.pagenow=i;				_createPage(_page,opt);			}				//插入当前至最后一页中间的分页			//var tstart=_page.pagenow;			_page.start=_page.pagenow;//修复这个重点错误redlz2500@20140115			if(_page.pagenow+_page.extendpage<_page.totalpage){				//中间还有空余量,插入页数				for(var exppow=1;_page.start+_mathexp(expbase,exppow)<_page.totalpage;exppow++){					_page.pagenow=_page.start+_mathexp(expbase,exppow);					_createPage(_page,opt);				}			}				//插入最后一页 insert last page			if(_page.pagenow<_page.totalpage){				_page.pagenow=_page.totalpage;				_createPage(_page,opt);			}		};

トップページと最後のページは固定です $multipage の前にホーム ページを追加するだけです。そして後ろの最後のページ

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。