php代码:
<?php /** *页面:datadisplay.php *功能:分页显示数据,模仿Google的分页方法,可用于文章列表More页面或者后台数据管理等。 *方法:修改$dbhost,$dbusername$dbpassword,$dbname,$dbtablename为你运行环境的真实值 * 然后保存为php文件,在浏览器浏览执行该文件即可得到显示效果,如果像得到其它效果还可修改$pageSize等参数 *来自QQ群:7357904 *版权:以上信息随意删除,知识来自互联网,只为分享经验心得,不存在任何版权问题。 */ $dbhost="host";//数据库地址 $dbusername="username";//链接数据库用户名 $dbpassword="password";//数据库密码 $dbname="dbname";//数据名称 $dbtablename="tablename";//数据表名 $conn = mysql_connect($dbhost,$dbusername,$dbpassword);//链接数据库(地址,数据库用户名,数据密码) mysql_select_db($dbname,$conn)or die("链接数据库失败");//设置当前使用的数据库名 $sql_select="SELECT * FROM $dbtablename"; $rs=mysql_query($sql_select,$conn); $totalRows=mysql_num_rows($rs);//总记录数 if ($totalRows>0) {//当然了,只有表中有数据才会用下面的一大堆程序来显示 $pageSize = 2; //每页显示的记录数 #当前页号$page,这个值由分页的链接得来,如果没有提供这个参数默认是显示第一页 if(!empty($_GET['page'])){ $page=$_GET['page']; }else { $page=1; } $totalPage = (int)ceil($totalRows/$pageSize); //总页数 总页数等于总记录数除以每页显示条数小数部分进一取整 #下面只是一些数据合法性的判断 if((int)$page<1){ $page=1; } if((int)$page > $totalPage){ $page=$totalPage; } #下面的加减2表示显示当前页前两页和后两页的,这个数字2可以根据你的需要修改,目的是为了像google那样只显示一定数量的分页链接,不至于在超大数据量分页时显示几十甚至上百个分页链接 #当然如果你一定要全都显示出来,只需要指定$begin=1;$end=$totalPage;即可 $begin = $page - 4; $end = $page + 5; #再下面还是一些数据合法性的判断 if($page<5){ $begin = 1; $end = 10;//这里是你要提供的可用链接数,本例就是当前页加前后两页共5页,if条件为可用链接数的一半 } if($page>$totalPage-5){ $begin = $totalPage - 9; $end = $totalPage; } if($begin<1){ $begin = 1; } if($end>$totalPage){ $end = $totalPage; } #下面开始输出分页链接 /*==================显示第一种分页链接 开始===============*/ echo "<table border=1 bgcolor=\"gray\"><tr>"; echo "<td>$totalRows</td><td>$page/$totalPage</td>"; if($page>1){ echo "<td><a href=\"?page=1\"> |< </a></td><td><a href=\"?page=".($page-1)."\"> << </a></td>"; } for($i=$begin; $i<=$end; $i++){ if($i==$page){ echo("<td bgcolor='red'> "); }else{ echo("<td> "); } echo("<a href=\"?page={$i}\">$i</a>"); echo(" </td>"); } if($page < $end){ echo "<td><a href=\"?page=".($page+1)."\"> >> </a></td><td><a href=\"?page=".$totalPage."\"> >| </a></td>"; } echo "<td><input type=\"text\" size=\"3\" ōnkeydown=\"javascrīpt:if(event.keyCode==13){window.location='?page='+this.value;}\"></td>"; echo "</tr></table>"; /*==================显示第一种分页链接 结束===============*/ /*==================显示第二种分页链接 开始===============*/ echo "共有 $totalPage 页 $totalRows 条 <a href=\"?page=".($page-1)."\">< Back</a>"; #接下来的就是显示带有链接的1、2、3、4...5、6、7、8了 for($i=$begin; $i<=$end; $i++){ echo(" "); echo("<a href=\"?page={$i}\">"); if($i==$page) echo("<font color=\"red\">"); echo("$i"); if($i==$page) echo("</font>"); echo("</a>"); echo(" "); if($i!=$end) echo("|"); } echo ("<a href=\"?page=".($page+1)."\">Next ></a>\n"); $selecet_page="<select name=\"page\" ōnChange=\"window.location='?page='+this.value;\">\n"; for($i=1;$i<=$totalPage;$i++){ if($i==$page){ $selecet_page.="<option value=\"$i\" selected>$i</option>\n"; }else { $selecet_page.="<option value=\"$i\">$i</option>\n"; } } $selecet_page.="</select>\n"; echo $selecet_page; /*==================显示第二种分页链接 结束===============*/ #链接显示完了下面就是显示数据了,当然了显示效果大家可以尽情发挥,这里只是提供一个通用的模式 #By the way:不论美工给你设么样效果页面,充分利用我们的 if for 绝对可以搞定 $beginNum=($page-1)*$pageSize;//查询记录从第几条开始 $sql_select="SELECT * FROM $dbtablename LIMIT $beginNum,$pageSize"; $rs=mysql_query($sql_select,$conn); $rs_field_counts=mysql_num_fields($rs);//查询得到的字段数 echo ("<table border='1'>\n"); echo ("<tr bgcolor=\"#CCFFCC\">\n"); #显示表头,当然实际应用中不太可能直接输出数据库的字段名,那就把下面的for循环直接写成你要显示的表头就好了 for ($i=0;$i<$rs_field_counts;$i++){ $rs_field_name=mysql_field_name($rs,$i); echo("<th>$rs_field_name</th>"); } echo ("\n</tr>\n"); #显示数据 $row_number=0;//这个变量用于控制行显示颜色, while ($row=mysql_fetch_array($rs)){ #判断是单数行还是偶数行,这个原理同样适用于每行显示两条记录的情况(带图片的产品展示一般会用到) if ($row_number%2==0) { $tr_color="#CCFFFF"; }else{ $tr_color="#CCFFCC"; } echo ("<tr bgcolor=\"$tr_color\">\n"); for ($i=0;$i<$rs_field_counts;$i++){ echo ("<td>"); if(empty($row[$i])){ echo (" "); }else { echo ($row[$i]); } echo ("</td>"); } echo ("\n</tr>\n"); $row_number++; } echo "</table>\n"; //不要忘了数据显示结束一定要输出这个呦!只有到这里你才算大功告成。 }else {//如果表中没有数据 echo("sorry,没有符合条件的数据!<br />\n"); } //下面两句纯熟充数 :) mysql_free_result($rs); mysql_close($conn); ?>
php代码
<?php /** *页面:datadisplay.php *功能:分页显示数据,模仿Google的分页方法,可用于文章列表More页面或者后台数据管理等。 *方法:修改$dbhost,$dbusername$dbpassword,$dbname,$dbtablename为你运行环境的真实值 * 然后保存为php文件,在浏览器浏览执行该文件即可得到显示效果,如果像得到其它效果还可修改$pageSize等参数 *来自QQ群:7357904 *版权:以上信息随意删除,知识来自互联网,只为分享经验心得,不存在任何版权问题。 */ $dbhost="host";//数据库地址 $dbusername="username";//链接数据库用户名 $dbpassword="password";//数据库密码 $dbname="dbname";//数据名称 $dbtablename="tablename";//数据表名 $conn = mysql_connect($dbhost,$dbusername,$dbpassword);//链接数据库(地址,数据库用户名,数据密码) mysql_select_db($dbname,$conn)or die("链接数据库失败");//设置当前使用的数据库名 $sql_select="SELECT * FROM $dbtablename"; $rs=mysql_query($sql_select,$conn); $totalRows=mysql_num_rows($rs);//总记录数 if ($totalRows>0) {//当然了,只有表中有数据才会用下面的一大堆程序来显示 $pageSize = 2; //每页显示的记录数 #当前页号$page,这个值由分页的链接得来,如果没有提供这个参数默认是显示第一页 if(!empty($_GET['page'])){ $page=$_GET['page']; }else { $page=1; } $totalPage = (int)ceil($totalRows/$pageSize); //总页数 总页数等于总记录数除以每页显示条数小数部分进一取整 #下面只是一些数据合法性的判断 if((int)$page<1){ $page=1; } if((int)$page > $totalPage){ $page=$totalPage; } #下面的加减2表示显示当前页前两页和后两页的,这个数字2可以根据你的需要修改,目的是为了像google那样只显示一定数量的分页链接,不至于在超大数据量分页时显示几十甚至上百个分页链接 #当然如果你一定要全都显示出来,只需要指定$begin=1;$end=$totalPage;即可 $begin = $page - 4; $end = $page + 5; #再下面还是一些数据合法性的判断 if($page<5){ $begin = 1; $end = 10;//这里是你要提供的可用链接数,本例就是当前页加前后两页共5页,if条件为可用链接数的一半 } if($page>$totalPage-5){ $begin = $totalPage - 9; $end = $totalPage; } if($begin<1){ $begin = 1; } if($end>$totalPage){ $end = $totalPage; } #下面开始输出分页链接 /*==================显示第一种分页链接 开始===============*/ echo "<table border=1 bgcolor=\"gray\"><tr>"; echo "<td>$totalRows</td><td>$page/$totalPage</td>"; if($page>1){ echo "<td><a href=\"?page=1\"> |< </a></td><td><a href=\"?page=".($page-1)."\"> << </a></td>"; } for($i=$begin; $i<=$end; $i++){ if($i==$page){ echo("<td bgcolor='red'> "); }else{ echo("<td> "); } echo("<a href=\"?page={$i}\">$i</a>"); echo(" </td>"); } if($page < $end){ echo "<td><a href=\"?page=".($page+1)."\"> >> </a></td><td><a href=\"?page=".$totalPage."\"> >| </a></td>"; } echo "<td><input type=\"text\" size=\"3\" ōnkeydown=\"javascrīpt:if(event.keyCode==13){window.location='?page='+this.value;}\"></td>"; echo "</tr></table>"; /*==================显示第一种分页链接 结束===============*/ /*==================显示第二种分页链接 开始===============*/ echo "共有 $totalPage 页 $totalRows 条 <a href=\"?page=".($page-1)."\">< Back</a>"; #接下来的就是显示带有链接的1、2、3、4...5、6、7、8了 for($i=$begin; $i<=$end; $i++){ echo(" "); echo("<a href=\"?page={$i}\">"); if($i==$page) echo("<font color=\"red\">"); echo("$i"); if($i==$page) echo("</font>"); echo("</a>"); echo(" "); if($i!=$end) echo("|"); } echo ("<a href=\"?page=".($page+1)."\">Next ></a>\n"); $selecet_page="<select name=\"page\" ōnChange=\"window.location='?page='+this.value;\">\n"; for($i=1;$i<=$totalPage;$i++){ if($i==$page){ $selecet_page.="<option value=\"$i\" selected>$i</option>\n"; }else { $selecet_page.="<option value=\"$i\">$i</option>\n"; } } $selecet_page.="</select>\n"; echo $selecet_page; /*==================显示第二种分页链接 结束===============*/ #链接显示完了下面就是显示数据了,当然了显示效果大家可以尽情发挥,这里只是提供一个通用的模式 #By the way:不论美工给你设么样效果页面,充分利用我们的 if for 绝对可以搞定 $beginNum=($page-1)*$pageSize;//查询记录从第几条开始 $sql_select="SELECT * FROM $dbtablename LIMIT $beginNum,$pageSize"; $rs=mysql_query($sql_select,$conn); $rs_field_counts=mysql_num_fields($rs);//查询得到的字段数 echo ("<table border='1'>\n"); echo ("<tr bgcolor=\"#CCFFCC\">\n"); #显示表头,当然实际应用中不太可能直接输出数据库的字段名,那就把下面的for循环直接写成你要显示的表头就好了 for ($i=0;$i<$rs_field_counts;$i++){ $rs_field_name=mysql_field_name($rs,$i); echo("<th>$rs_field_name</th>"); } echo ("\n</tr>\n"); #显示数据 $row_number=0;//这个变量用于控制行显示颜色, while ($row=mysql_fetch_array($rs)){ #判断是单数行还是偶数行,这个原理同样适用于每行显示两条记录的情况(带图片的产品展示一般会用到) if ($row_number%2==0) { $tr_color="#CCFFFF"; }else{ $tr_color="#CCFFCC"; } echo ("<tr bgcolor=\"$tr_color\">\n"); for ($i=0;$i<$rs_field_counts;$i++){ echo ("<td>"); if(empty($row[$i])){ echo (" "); }else { echo ($row[$i]); } echo ("</td>"); } echo ("\n</tr>\n"); $row_number++; } echo "</table>\n"; //不要忘了数据显示结束一定要输出这个呦!只有到这里你才算大功告成。 }else {//如果表中没有数据 echo("sorry,没有符合条件的数据!<br />\n"); } //下面两句纯熟充数 :) mysql_free_result($rs); mysql_close($conn); ?>