2015年2月4日重写分页逻辑

想起了几年之前面试的分页题目,今天想起来就又写了一遍


<?php

echo getContent();


function getContent(){
	$total = 10;
	$stepNum = 1;

	$forward_title = '下一页 >';
	$backoff_title = '< 上一页';


	$current = !isset($_REQUEST['current']) ? 1 : $_REQUEST['current'];
	$ShowNum = !isset($_REQUEST['shownum']) ? 4 : $_REQUEST['shownum'];

	$current < 1 && $current = 1;
	$ShowNum < 2 && $shownum = 4;

	$leftPage = $current - $ShowNum/2;
	$rightPage = $current + $ShowNum/2;


	if($leftPage < 1){
		$rightPage = $rightPage - $leftPage + 1;
		$leftPage = 1;
	}

	if($rightPage > $total){
		$leftPage = $leftPage - ($rightPage - $total);
		$rightPage = $total;
	}

	$left = $current > 1 ? "<a href='?current=".($current - $stepNum)."&shownum=$ShowNum'>$backoff_title</a> " : ' ';
	$page .= $left;

	for($i=$leftPage;$i<=$rightPage;$i++){
		if($i == $current){
			$page .= "<font color='red'>" . $i . '</font> ';
		}else{
			$page .= "<a href='?current=".$i."&shownum=".$ShowNum."'>".$i . '</a> ';
		}
	}

	$right = $current < $total ? " <a href='?current=".($current + $stepNum)."&shownum=$ShowNum'>$forward_title</a>" : ' ';
	$page .= $right;

	return $page;
}


这段代码的问题是如果显示页数大于总页数的时候会有问题,但是基本上显示页数不太可能大于总页数,我们考虑的也是总页数大于显示页数的情况。

你可能感兴趣的:(PHP)