我自己有分页显示的代码,是“第一页”,“上一页”,“下一页”,“最后一页”这样的,我感觉这样的分页不是很好,所以就想知道三星中国网站的分页是如何做的,而且我的第一个作品很快就要发布了,着急呀,我不想用类来解决问题,大家帮忙呀,能不能将代码贴出来,分不够还可以再加。xumail(笑傲江湖) ,帮帮我,我没有太多时间了,以后再好好研究,当务之急是尽快得到代码,站点计划6月9日开通,已经推迟了好几天了,因为自己写的分页代码影响版面,不得不换呀
调试欢乐多
//通用变量,请进行设置
$host = "localhost"; //主机名,一般为localhost
$user = "root"; //Mysql用户名:一般为root或空格
$password = ""; //Mysql密码:一般为root或空格
$databasename = "dbname"; //数据库名
$tablename= "tablename"; //留言本数据对应的表的名称
$pagesize = 300; //每页数量
//-------------------------------------------------------------------
//连接数据库
mysql_connect("$host","$user","$password") or die("<font color=red>不能连接到数据库服务器!</font>");
mysql_select_db("$databasename");
if($page=="")
{
$page=0;
}
?><title>IP统计</title>
<center><font size=2 color=#aaaaaa>网站访问<a target='_self' href='ipshow.php'><font color=#aaaaaa>统计</font></a>:记录总数为
<?php
//
//计算有多少个记录要显示
$query00 = "select * from $tablename";
$result00 = mysql_query($query00);
$total= mysql_numrows($result00);
$totalpage=(int)($total/$pagesize)+1;
if(!($total%$pagesize))$totalpage--;
echo $total.",共".$totalpage."页";
?></font></center><center><table width=700 border=0>
<tr><td width=70><font size=2 color=#aaaaaa>编号</font></td>
<td width=120><font size=2 color=#aaaaaa>IP地址</font></td>
<td width=200><font size=2 color=#aaaaaa>地域</font></td>
<td width=80><font size=2 color=#aaaaaa>网页名</font></td>
<td width=50><font size=2 color=#aaaaaa>次数</font></td>
<td width=180><font size=2 color=#aaaaaa>最后访问</font></td></tr>
<?php
//-------------------------------------------------------------------
$offset=$page*$pagesize;
$query44 = "select * from $tablename order by id desc limit $offset,$pagesize";
$result44 = mysql_query($query44);
while($row = mysql_fetch_row($result44)){
echo "<tr><td><font size=2 color=#000000>".$row[0]."</font></td>";
echo "<td><font size=2 color=#000000>".$row[2]."</font></td>";
echo "<td><font size=2 color=#000000>".$row[3]."</font></td>";
echo "<td><font size=2 color=#000000>".$row[1]."</font></td>";
echo "<td><font size=2 color=#000000>".$row[4]."</font></td>";
echo "<td><font size=2 color=#000000>".$row[5]."</font></td></tr>";
}
?>
<tr><td><font size=2 color=#000000> </font></td>
<td><font size=2 color=#000000> </font></td>
<td><font size=2 color=#000000> </font></td>
<td><font size=2 color=#000000> </font></td>
<td><font size=2 color=#000000> </font></td>
<td align=center><font size=2 color=#000000>
<?php
if(($page==0))
{
echo "<font size=2 color=#000000>首页</font> <font size=2 color=#000000>上页</font> ";
}
else
{
echo "<a target='_self' href=?page=0><font color=blue>首页</font></a>
<a target='_self' href=?page=".($page-1)."><font color=blue>上页</font></a> ";
}
if((($page+1)*$pagesize>$total))
{
echo "<font size=2 color=#000000>下页</font> <font size=2 color=#000000>末页</font>";
}
else
{
echo "<a target='_self' href=?page=".($page+1)."><font color=blue>下页</font></a>
<a target='_self' href=?page=".($totalpage-1)."><font color=blue>末页</font></a>";
}
?></font></td></tr>
</table><center>
<?php
//-------------------------------------------------------------------
//断开数据库
mysql_close();
?>
我想你能够用上一页,下一页来分页,其他的也应该不是问题
{
echo "<a target='_self' href=?page=".($i)."><font color=blue>第".($i)."页</font></a>";
}
<?php
$currentPage = $_SERVER["PHP_SELF"];$maxRows = 10;
$page = 1;
if (isset($_GET['page'])) {
$page = $_GET['page'];
}
$startRow = ($page-1) * $maxRows;$query = "SELECT * FROM news ORDER BY id DESC";
$query_limit = sprintf("%s LIMIT %d, %d", $query, $startRow, $maxRows);
$news = mysql_query($query_limit, $conn) or error("对不起!没有相关记录。");
$row = mysql_fetch_assoc($news);$all = mysql_query($query);
$rows = mysql_num_rows($all);$totalPages = ceil($rows/$maxRows)-1;
$queryString = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "page") == false && stristr($param, "rows") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString = sprintf("&rows=%d%s", $rows, $queryString);
echo "
<table cellspacing=0 cellpadding=0 border=0 width=100% align=center>";do{
echo "
<tr>
<td height=15>".$row['title']."</td>
</tr>";
}while($row = mysql_fetch_assoc($news));echo "
</table>
<table cellspacing=0 cellpadding=0 border=0 align=center>
<tr height=30>";if(($totalPages)<="10"){ echo "<td width=20><img src=".$host."pic/prev.gif align=absmiddle></td>"; for($i="1";$i<=($totalPages+1);$i++){ if($_SERVER['QUERY_STRING']!=""){
$str = "?page=".$i.$queryString;
}
else{
$str = "?page";
}
if($i!=$_GET['page']){
echo "<td width=20 align=center><a class=page_link href=http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$str.">".$i."</a></td><td width=20 align=center><img src=".$host."pic/cell.gif align=absmiddle></td>";
}
else{
echo "<td width=20 align=center class=page_text><font color=#FF8000>".($i)."</font></td><td width=20 align=center><img src=".$host."pic/cell.gif align=absmiddle></td>";
}
}
echo "<td width=20><img src=".$host."pic/next.gif align=absmiddle></td>";
}
else{
$page = $_GET['page'];
if($page<="10"){
echo "<td width=20><img src=".$host."pic/prev.gif align=absmiddle></td>";
for($i="1";$i<="10";$i++){ if($_SERVER['QUERY_STRING']!=""){
$str = "?page=".$i.$queryString;
}
else{
$str = "?page";
}
if($i!=$_GET['page']){
echo "<td width=20 align=center><a class=page_link href=http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$str.">".($i)."</a></td><td width=20 align=center><img src=".$host."pic/cell.gif align=absmiddle></td>";
}
else{
echo "<td width=20 align=center class=page_text><font color=#FF8000>".($i)."</font></td><td width=20 align=center><img src=".$host."pic/cell.gif align=absmiddle></td>";
}
}
echo "<td width=20 align=right><a href=http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?page=11".$queryString."><img src=".$host."pic/next.gif align=absmiddle border=0></a></td>";
}
if($page>"10" && $page<="20" && $totalPages<="20"){
echo "<td width=20><a href=http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?page=10".$queryString."><img src=".$host."pic/prev.gif align=absmiddle border=0></a></td>";
for($i="11";$i<=($totalPages+1);$i++){ if($_SERVER['QUERY_STRING']!=""){
$str = "?page=".$i.$queryString;
}
else{
$str = "?page";
}
if($i!=$_GET['page']){
echo "<td width=20 align=center><a class=page_link href=http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$str.">".($i)."</a></td><td width=20 align=center><img src=".$host."pic/cell.gif align=absmiddle></td>";
}
else{
echo "<td width=20 align=center class=page_text><font color=#FF8000>".($i)."</font></td><td width=20 align=center><img src=".$host."pic/cell.gif align=absmiddle></td>";
}
}
echo "<td width=20 align=right><img src=".$host."pic/next.gif align=absmiddle border=0></td>";
}}
echo "
</tr>
</table>";?>
$str = "?page=".$i.$queryString;
}
else{
$str = "?page";
}
应为:
if($_SERVER['QUERY_STRING']!=""){
$str = "?page=".$i.$queryString;
}
else{
$str = "?page=".$i;
}
mysql_select_db("db_name");
$sql = "select count(*) from tbl_name");
$rs = mysql_qrery($sql);
list($reccount) = mysql_fetch_row($rs); // 取得记录总数
$pagesize = 20; // 每页记录数
$pages = ceil($reccount/$pagesize); // 计算总页数/*** 以上是分页显示的准备工作。无论采用何种导航方式,准备工作都是要做的 ***/// 格式化当前显示页号
$page = $_GET['page'];
if($page < 1) $page = 1;// 生成导航条
$stat = round($page/10)*10; // 导航条起始号
if($stat == 0) $stat = 1;
echo $end = ceil($page/10)*10; // 导航条终止号
for($i=$stat;$i<=min($end,$pages);$i++) {
if($i == $page)
echo " $i ";
else
echo "[<a herf='view.php?page=$i'>$i</a>]";
}
if($i < $pages)
echo "<a herf='view.php?page=$i'>>$gt;</a>";
学习一下.....
| 取得下一页.$char为链接的字符,默认为"[>]"
| i.e. $pb = new PageBar(50, 10);
| $next_page = $pb->next_page("下一页");
| +-----------------------------------------------
*/
function next_page($char='') {
$linkhead = $this->linkhead;
$total_page = $this->total_page;
$pagecount = $this->pagecount;
if (empty($char)) {
$char = "[>]";
}
if ($pagecount<$total_page) {
$next_page = $pagecount + 1;
return "<a href=\"$linkhead"."pagecount=$next_page\" title=\"next page\">$char</a>";
} else {
return '';
}
}
#End of function next_page(); /**+-----------------------------------------------
| 取得页码数字条. $num 为个数,默认为10
| $color 为当前链接的突显颜色
| $left 数字左边 默认为"["
| $right 数字左右 默认为"]"
| i.e. $pb = new PageBar(50, 10);
| $num_bar = $pb->num_bar(9, "$cccccc");
| +-----------------------------------------------
*/
function num_bar($num='', $color='', $maincolor='', $left='', $right='') {
$num = (empty($num))?10:$num;
$this->num = $num;
$mid = floor($num/2);
$last = $num - 1;
$pagecount = $this->pagecount;
$totalpage = $this->total_page;
$linkhead = $this->linkhead;
$left = (empty($left))?"[":$left;
$right = (empty($right))?"]":$right;
$color = (empty($color))?"#ff0000":$color;
$minpage = (($pagecount-$mid)<1)?1:($pagecount-$mid);
$maxpage = $minpage + $last;
if ($maxpage>$totalpage) {
$maxpage = $totalpage;
$minpage = $maxpage - $last;
$minpage = ($minpage<1)?1:$minpage;
} for ($i=$minpage; $i<=$maxpage; $i++) {
$chars = $left.$i.$right;
$char = "<font color='$maincolor'>".$chars."</font>";
if ($i==$pagecount) {
$char = "<font color='$color'>$chars</font>";
} $linkchar = "<a href='$linkhead"."pagecount=$i'>".$char."</a>";
$linkbar .= $linkchar;
} return $linkbar;
}
#End of function num_bar();
/**+-----------------------------------------------
| 取得上一组数字条.$char为链接的字符,默认为"[<<]"
| i.e. $pb = new PageBar(50, 10);
| $num_bar = $pb->num_bar();
| $pre_group = $pb->pre_group();
| +-----------------------------------------------
*/
function pre_group($char='') {
$pagecount = $this->pagecount;
$linkhead = $this->linkhead;
$num = $this->num;
$mid = floor($num/2);
$minpage = (($pagecount-$mid)<1)?1:($pagecount-$mid);
$char = (empty($char))?"[<<]":$char;
$pgpagecount = ($minpage>$num)?$minpage-$mid:1;
return "<a href='$linkhead"."pagecount=$pgpagecount' title=\"previous group number bar\">".$char."</a>";
}
#End of function pre_group();
/**+-----------------------------------------------
| 取得下一组数字条.$char为链接的字符,默认为"[>>]"
| i.e. $pb = new PageBar(50, 10);
| $num_bar = $pb->num_bar();
| $next_group = $pb->next_group();
| +-----------------------------------------------
*/
function next_group($char='') {
$pagecount = $this->pagecount;
$linkhead = $this->linkhead;
$totalpage = $this->total_page;
$num = $this->num;
$mid = floor($num/2);
$last = $num;
$minpage = (($pagecount-$mid)<1)?1:($pagecount-$mid);
$maxpage = $minpage + $last;
if ($maxpage>$totalpage) {
$maxpage = $totalpage;
$minpage = $maxpage - $last;
$minpage = ($minpage<1)?1:$minpage;
} $char = (empty($char))?"[>>]":$char;
$ngpagecount = ($totalpage>$maxpage+$last)?$maxpage + $mid:$totalpage; return "<a href='$linkhead"."pagecount=$ngpagecount' title=\"next group number bar\">".$char."</a>";
}
#End of function next_group(); /**+-----------------------------------------------
| 取得整个数字条,上一页,下一页,上一组
| 下一组的等.$num数字个数,$color 当前链接的突显色
| i.e. $pb = new PageBar(50, 10);
| $whole_num_bar = $pb->whole_num_bar(9);
| +-----------------------------------------------
*/
function whole_num_bar($num='', $color='', $maincolor='') {
$num_bar = $this->num_bar($num, $color, $maincolor);
return $this->first_page(1, '', $maincolor).$this->pre_group("<font color='$maincolor'>[<<]</font>").$this->pre_page("<font color='$maincolor'>[<]</font>").$num_bar.$this->next_page("<font color='$maincolor'>[>]</font>").$this->next_group("<font color='$maincolor'>[>>]</font>").$this->total_page(1, '', $maincolor);
}
#End of function whole_bar();
/**+-----------------------------------------------
| 取得整链接,等于whole_num_bar加上表单跳转.
| $num数字个数,$color 当前链接的突显色
| i.e. $pb = new PageBar(50, 10);
| $whole_bar = $pb->whole_bar(9);
| +-----------------------------------------------
*/
function whole_bar($jump='', $num='', $color='', $maincolor='') {
$whole_num_bar = $this->whole_num_bar($num, $color, $maincolor)." ";
$jump_form = $this->jump_form($jump);
return <<<EOT
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right">$whole_num_bar</td>
<td width="50" align="right">$jump_form</td>
</tr>
</table>
EOT;
} /**+-----------------------------------------------
| 跳转表单
| i.e. $pb = new PageBar(50, 10);
| $Jump_form = $pb->Jump_form();
| +-----------------------------------------------
*/
function Jump_form($jump='') {
$formname = "pagebarjumpform".$jump;
$jumpname = "jump".$jump;
$linkhead = $this->linkhead;
$total = $this->total_page;
$form = <<<EOT
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<script language="javascript">
function $jumpname(linkhead, total, page){
var pagecount = (page.value>total)?total:page.value;
pagecount = (pagecount<1)?1:pagecount;
location.href = linkhead + "pagecount=" + pagecount;
return false;
}
</script>
<form name="$formname" method="post" onSubmit="return $jumpname('$linkhead', $total, $formname.page)"><tr>
<td>
<input name="page" type="text" size="1">
<input type="button" name="Submit" value="GO" onClick="return $jumpname('$linkhead', $total, $formname.page)">
</td>
</tr></form></table>
EOT; return $form;
}
#End of function Jump_form();}
#End of class PageBar;
/*****
//example$total = 1000;
$onepage = 20;$pb = new AsPagebar($total, $onepage);
$offset = "offset=".$pb->offset();
$pagebar1 = $pb->whole_bar();
$pagebar2 = $pb->whole_bar(2, 19);
$pagebar3 = $pb->whole_bar(3, 5, '#000000', '#cccccc');
echo $offset."<br>".$pagebar1."<br>";
echo $offset."<br>".$pagebar2."<br>";
echo $offset."<br>".$pagebar3."<br>";/** return:
offset=0
[1][<<][1][2][3][4][5][6][7][8][9][10][>][>>][50]
*****/
?>
用起来很不错的呀,功能很齐全。谢谢各位了,准备结贴了。