但为什么好多代码都看不懂呢?尤其是对于初学者。会的人心里很清楚,不会的却摸不出头绪。
索性把代码全拷下来,又不知道该修改哪里?没办法了,只有在这里发帖了,望各位大狭指点指点。
我想做一个“上一页|下一页”这样的连接,来读数据,怎么这么难?
那个什么什么page变量怎么传递的?又是怎么得到的?能讲清楚一点吗?
例如:
// 格式化当前显示页号
$page = $_GET['page'];
if($page < 1) $page = 1;
这是什么意思?page 从那里传来的?是自身吗?怎么传的?$_GET又是怎么用的?
一句两句不嫌少,请多多指点!
11 个解决方案
#1
先看看手册
$page = $_GET['page'];
if($page < 1) $page = 1;
当传入的页号小于1时,将页号设为1
避免出错
$page = $_GET['page'];
if($page < 1) $page = 1;
当传入的页号小于1时,将页号设为1
避免出错
#2
我想你要一步一步的来.
首先你实现读取数据,逐条显示,再加入分页程序.
事情总是有先后的,慢慢来吧.
$PAGE是自定义变量,$_GET['page']是从地址栏传递过来的URL变量,即:abc.php?page=2中的page,$_GET是一个数组,里面的值就是URL变量,你可以随便做一个页面试一试,如下:
abc.php
===========
<?php
print_r($_GET);//print_r()函数不知道就查手册
?>
在地址栏里输入abc.php?a=1&b=2&c=3&page=5
看看会输出什么?
首先你实现读取数据,逐条显示,再加入分页程序.
事情总是有先后的,慢慢来吧.
$PAGE是自定义变量,$_GET['page']是从地址栏传递过来的URL变量,即:abc.php?page=2中的page,$_GET是一个数组,里面的值就是URL变量,你可以随便做一个页面试一试,如下:
abc.php
===========
<?php
print_r($_GET);//print_r()函数不知道就查手册
?>
在地址栏里输入abc.php?a=1&b=2&c=3&page=5
看看会输出什么?
#3
大体上意思就是你先确定所有数据的总数!!然后确定每一页输出几条数据!然后分页的时候再确定一共需要几页!!在输出数据的时候:
$page++;
$s=($page-1)*20;
select * from 表 order by id desc limit $s,20;
意思就是在本页第二次输出的时候从第21条开始!!
就是这样!!
$page++;
$s=($page-1)*20;
select * from 表 order by id desc limit $s,20;
意思就是在本页第二次输出的时候从第21条开始!!
就是这样!!
#4
分页的思路基本上都是一样的
$onelist="15";//每页显示数量
//获取GET
if(isset($_GET['cp'])){
$cp=$_GET['cp'];
$limit=($_GET['cp']-1)*$onelist;
}
else{
$cp="1";
$limit="0";//查询开始记录数
$query="select * from table limit $limit,".$onelist;
然后算出下一页(上一页,最后页)的page值是多少
基本上都是这样了
自己试着写一下就明白了
$onelist="15";//每页显示数量
//获取GET
if(isset($_GET['cp'])){
$cp=$_GET['cp'];
$limit=($_GET['cp']-1)*$onelist;
}
else{
$cp="1";
$limit="0";//查询开始记录数
$query="select * from table limit $limit,".$onelist;
然后算出下一页(上一页,最后页)的page值是多少
基本上都是这样了
自己试着写一下就明白了
#5
楼主有没有学会从数据库中取出数据,并且显示在页面上了?
如果这个会了,然后再谈的上分页的问题了.
慢慢来,不要着急哦.
如果这个会了,然后再谈的上分页的问题了.
慢慢来,不要着急哦.
#6
楼主给你个类,呵呵http://www.phpe.net/class/104.shtml
不知道能不能看懂。
那个page,是url穿过来的,_get的作用就是得到它。
不知道能不能看懂。
那个page,是url穿过来的,_get的作用就是得到它。
#7
多谢各位!
到此时,我稍微懂点儿了。我再试试。
到此时,我稍微懂点儿了。我再试试。
#8
现在 有一点点进步了
我的 代码是这样的 :
<?
$page = $_GET['p'];
if($page < 1) $page = 1;
echo $page;
echo "<a href=?p=";?><? echo $page+1;?><? echo ">下一页</a>";
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
echo $p;
?>
在地址栏中输入:文件名.php或 文件名.php?p=3 就可以了
但echo "<a href=?p='.($page+1).'>下一页</a>";会出错,错在哪里?
班门弄斧,多多指教!
我的 代码是这样的 :
<?
$page = $_GET['p'];
if($page < 1) $page = 1;
echo $page;
echo "<a href=?p=";?><? echo $page+1;?><? echo ">下一页</a>";
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
echo $p;
?>
在地址栏中输入:文件名.php或 文件名.php?p=3 就可以了
但echo "<a href=?p='.($page+1).'>下一页</a>";会出错,错在哪里?
班门弄斧,多多指教!
#9
搂主喜欢用echo,呵呵
#10
echo "<a href=?p=";?><? echo $page+1;?><? echo ">下一页</a>";
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
写的有够乱的....不能弄成一行吗?....晕..你自己看着也不方便呀.
下一页出错,可能是你的href里的地址出错了,查一下看看.
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
写的有够乱的....不能弄成一行吗?....晕..你自己看着也不方便呀.
下一页出错,可能是你的href里的地址出错了,查一下看看.
#11
这个是比较简单的,可以好好看看了
<html>
<head>
<title>PHP分页</title>
</head>
<body>
<?
$gPageSize= 50; //每页显示的记录数
$hostname = "localhost"; //mysql Server
$dbuser = "root"; //用户名
$dbpasswd = ""; //密码
//连接数据库
$id = mysql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");
//选择数据库
$db = mysql_select_db("数据库名",$id) or die("无法连接数据库!");
$query = "select * from 表名";
//执行查询语句
$rresult = mysql_query($query) or die("无法执行SQL:$query");
//$page变量标示当前显示的页
if(!isset($page)) $page=1;
if($page==0) $page=1;
//得到当前查询到的纪录数 $nNumRows
if(($nNumRows= mysql_num_rows($rresult))<=0)
{
echo "<p align=center>没有纪录";
exit;
};
//得到最大页码数MaxPage
$MaxPage = (int)ceil($nNumRows/$gPageSize);
if((int)$page > $MaxPage)
$page=$maxPage;
?>
<table align="center" width="80%" border=0> <tr><td><? echo "<font size=2>第
$page 页,共 $MaxPage 页</font>";?></td><td></td></tr></table>
<table align="center" width="80%" border="1" cellspacing="0" cellpadding="4" bordercolorlight="#CC9966" bgcolor="#00F2EE" bordercolordark="#FFFFFF" class="LZH">
<tr bgcolor="#F7F2ff" style="font-size:14.8px;font-weight:bold">
<?
//显示表格头
for($iCnt = 0; $iCnt < mysql_num_fields($rresult); $iCnt++)
{
echo "<td>".mysql_field_name($rresult,$iCnt)."</td>" ;
}
?>
</tr>
<?
//根据偏移量($page - 1)*$gPageSize,运用mysql_data_seek函数得到要显示的页面
if( mysql_data_seek($rresult,($page-1)*$gPageSize) )
{
$i=0;
//循环显示当前纪录集
for($i;$i<$gPageSize;$i++)
{
echo "<tr style=\"font-size:12px\">";
//得到当前纪录,填充到数组$arr;
$arr= mysql_fetch_row($rresult);
if($arr)
{
//循环显示当前纪录的所有字段值
for($nOffSet = 0;$nOffSet < count($arr);$nOffSet++)
{
echo "<td>".$arr[$nOffSet]."</td>";
}
}
echo "</tr>";
}
}
?>
</table>
<br>
<hr size=1 width=80%>
<div align=center style="font-size:12px">
<?
//首页和上一页的链接
if( $nNumRows>1 && $page>1)
{
$prevPage=$page-1;
echo " <a href=$PHP_SELF?page=1>首页</a> ";
echo " <a href=$PHP_SELF?page=$prevPage >上一页</a> ";
}
//下一页和末页的链接
if( $page>=1 && $page<$MaxPage)
{
$nextPage= $page+1;
echo " <a href=$PHP_SELF?page=$nextPage >下一页</a> ";
echo " <a href=$PHP_SELF?page=$MaxPage >末页</a> ";
}
?>
</div>
</body>
</html>
<html>
<head>
<title>PHP分页</title>
</head>
<body>
<?
$gPageSize= 50; //每页显示的记录数
$hostname = "localhost"; //mysql Server
$dbuser = "root"; //用户名
$dbpasswd = ""; //密码
//连接数据库
$id = mysql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");
//选择数据库
$db = mysql_select_db("数据库名",$id) or die("无法连接数据库!");
$query = "select * from 表名";
//执行查询语句
$rresult = mysql_query($query) or die("无法执行SQL:$query");
//$page变量标示当前显示的页
if(!isset($page)) $page=1;
if($page==0) $page=1;
//得到当前查询到的纪录数 $nNumRows
if(($nNumRows= mysql_num_rows($rresult))<=0)
{
echo "<p align=center>没有纪录";
exit;
};
//得到最大页码数MaxPage
$MaxPage = (int)ceil($nNumRows/$gPageSize);
if((int)$page > $MaxPage)
$page=$maxPage;
?>
<table align="center" width="80%" border=0> <tr><td><? echo "<font size=2>第
$page 页,共 $MaxPage 页</font>";?></td><td></td></tr></table>
<table align="center" width="80%" border="1" cellspacing="0" cellpadding="4" bordercolorlight="#CC9966" bgcolor="#00F2EE" bordercolordark="#FFFFFF" class="LZH">
<tr bgcolor="#F7F2ff" style="font-size:14.8px;font-weight:bold">
<?
//显示表格头
for($iCnt = 0; $iCnt < mysql_num_fields($rresult); $iCnt++)
{
echo "<td>".mysql_field_name($rresult,$iCnt)."</td>" ;
}
?>
</tr>
<?
//根据偏移量($page - 1)*$gPageSize,运用mysql_data_seek函数得到要显示的页面
if( mysql_data_seek($rresult,($page-1)*$gPageSize) )
{
$i=0;
//循环显示当前纪录集
for($i;$i<$gPageSize;$i++)
{
echo "<tr style=\"font-size:12px\">";
//得到当前纪录,填充到数组$arr;
$arr= mysql_fetch_row($rresult);
if($arr)
{
//循环显示当前纪录的所有字段值
for($nOffSet = 0;$nOffSet < count($arr);$nOffSet++)
{
echo "<td>".$arr[$nOffSet]."</td>";
}
}
echo "</tr>";
}
}
?>
</table>
<br>
<hr size=1 width=80%>
<div align=center style="font-size:12px">
<?
//首页和上一页的链接
if( $nNumRows>1 && $page>1)
{
$prevPage=$page-1;
echo " <a href=$PHP_SELF?page=1>首页</a> ";
echo " <a href=$PHP_SELF?page=$prevPage >上一页</a> ";
}
//下一页和末页的链接
if( $page>=1 && $page<$MaxPage)
{
$nextPage= $page+1;
echo " <a href=$PHP_SELF?page=$nextPage >下一页</a> ";
echo " <a href=$PHP_SELF?page=$MaxPage >末页</a> ";
}
?>
</div>
</body>
</html>
#1
先看看手册
$page = $_GET['page'];
if($page < 1) $page = 1;
当传入的页号小于1时,将页号设为1
避免出错
$page = $_GET['page'];
if($page < 1) $page = 1;
当传入的页号小于1时,将页号设为1
避免出错
#2
我想你要一步一步的来.
首先你实现读取数据,逐条显示,再加入分页程序.
事情总是有先后的,慢慢来吧.
$PAGE是自定义变量,$_GET['page']是从地址栏传递过来的URL变量,即:abc.php?page=2中的page,$_GET是一个数组,里面的值就是URL变量,你可以随便做一个页面试一试,如下:
abc.php
===========
<?php
print_r($_GET);//print_r()函数不知道就查手册
?>
在地址栏里输入abc.php?a=1&b=2&c=3&page=5
看看会输出什么?
首先你实现读取数据,逐条显示,再加入分页程序.
事情总是有先后的,慢慢来吧.
$PAGE是自定义变量,$_GET['page']是从地址栏传递过来的URL变量,即:abc.php?page=2中的page,$_GET是一个数组,里面的值就是URL变量,你可以随便做一个页面试一试,如下:
abc.php
===========
<?php
print_r($_GET);//print_r()函数不知道就查手册
?>
在地址栏里输入abc.php?a=1&b=2&c=3&page=5
看看会输出什么?
#3
大体上意思就是你先确定所有数据的总数!!然后确定每一页输出几条数据!然后分页的时候再确定一共需要几页!!在输出数据的时候:
$page++;
$s=($page-1)*20;
select * from 表 order by id desc limit $s,20;
意思就是在本页第二次输出的时候从第21条开始!!
就是这样!!
$page++;
$s=($page-1)*20;
select * from 表 order by id desc limit $s,20;
意思就是在本页第二次输出的时候从第21条开始!!
就是这样!!
#4
分页的思路基本上都是一样的
$onelist="15";//每页显示数量
//获取GET
if(isset($_GET['cp'])){
$cp=$_GET['cp'];
$limit=($_GET['cp']-1)*$onelist;
}
else{
$cp="1";
$limit="0";//查询开始记录数
$query="select * from table limit $limit,".$onelist;
然后算出下一页(上一页,最后页)的page值是多少
基本上都是这样了
自己试着写一下就明白了
$onelist="15";//每页显示数量
//获取GET
if(isset($_GET['cp'])){
$cp=$_GET['cp'];
$limit=($_GET['cp']-1)*$onelist;
}
else{
$cp="1";
$limit="0";//查询开始记录数
$query="select * from table limit $limit,".$onelist;
然后算出下一页(上一页,最后页)的page值是多少
基本上都是这样了
自己试着写一下就明白了
#5
楼主有没有学会从数据库中取出数据,并且显示在页面上了?
如果这个会了,然后再谈的上分页的问题了.
慢慢来,不要着急哦.
如果这个会了,然后再谈的上分页的问题了.
慢慢来,不要着急哦.
#6
楼主给你个类,呵呵http://www.phpe.net/class/104.shtml
不知道能不能看懂。
那个page,是url穿过来的,_get的作用就是得到它。
不知道能不能看懂。
那个page,是url穿过来的,_get的作用就是得到它。
#7
多谢各位!
到此时,我稍微懂点儿了。我再试试。
到此时,我稍微懂点儿了。我再试试。
#8
现在 有一点点进步了
我的 代码是这样的 :
<?
$page = $_GET['p'];
if($page < 1) $page = 1;
echo $page;
echo "<a href=?p=";?><? echo $page+1;?><? echo ">下一页</a>";
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
echo $p;
?>
在地址栏中输入:文件名.php或 文件名.php?p=3 就可以了
但echo "<a href=?p='.($page+1).'>下一页</a>";会出错,错在哪里?
班门弄斧,多多指教!
我的 代码是这样的 :
<?
$page = $_GET['p'];
if($page < 1) $page = 1;
echo $page;
echo "<a href=?p=";?><? echo $page+1;?><? echo ">下一页</a>";
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
echo $p;
?>
在地址栏中输入:文件名.php或 文件名.php?p=3 就可以了
但echo "<a href=?p='.($page+1).'>下一页</a>";会出错,错在哪里?
班门弄斧,多多指教!
#9
搂主喜欢用echo,呵呵
#10
echo "<a href=?p=";?><? echo $page+1;?><? echo ">下一页</a>";
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
写的有够乱的....不能弄成一行吗?....晕..你自己看着也不方便呀.
下一页出错,可能是你的href里的地址出错了,查一下看看.
echo "<a href=?p=";?><? echo $page-1;?><? echo ">上一页</a>";
写的有够乱的....不能弄成一行吗?....晕..你自己看着也不方便呀.
下一页出错,可能是你的href里的地址出错了,查一下看看.
#11
这个是比较简单的,可以好好看看了
<html>
<head>
<title>PHP分页</title>
</head>
<body>
<?
$gPageSize= 50; //每页显示的记录数
$hostname = "localhost"; //mysql Server
$dbuser = "root"; //用户名
$dbpasswd = ""; //密码
//连接数据库
$id = mysql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");
//选择数据库
$db = mysql_select_db("数据库名",$id) or die("无法连接数据库!");
$query = "select * from 表名";
//执行查询语句
$rresult = mysql_query($query) or die("无法执行SQL:$query");
//$page变量标示当前显示的页
if(!isset($page)) $page=1;
if($page==0) $page=1;
//得到当前查询到的纪录数 $nNumRows
if(($nNumRows= mysql_num_rows($rresult))<=0)
{
echo "<p align=center>没有纪录";
exit;
};
//得到最大页码数MaxPage
$MaxPage = (int)ceil($nNumRows/$gPageSize);
if((int)$page > $MaxPage)
$page=$maxPage;
?>
<table align="center" width="80%" border=0> <tr><td><? echo "<font size=2>第
$page 页,共 $MaxPage 页</font>";?></td><td></td></tr></table>
<table align="center" width="80%" border="1" cellspacing="0" cellpadding="4" bordercolorlight="#CC9966" bgcolor="#00F2EE" bordercolordark="#FFFFFF" class="LZH">
<tr bgcolor="#F7F2ff" style="font-size:14.8px;font-weight:bold">
<?
//显示表格头
for($iCnt = 0; $iCnt < mysql_num_fields($rresult); $iCnt++)
{
echo "<td>".mysql_field_name($rresult,$iCnt)."</td>" ;
}
?>
</tr>
<?
//根据偏移量($page - 1)*$gPageSize,运用mysql_data_seek函数得到要显示的页面
if( mysql_data_seek($rresult,($page-1)*$gPageSize) )
{
$i=0;
//循环显示当前纪录集
for($i;$i<$gPageSize;$i++)
{
echo "<tr style=\"font-size:12px\">";
//得到当前纪录,填充到数组$arr;
$arr= mysql_fetch_row($rresult);
if($arr)
{
//循环显示当前纪录的所有字段值
for($nOffSet = 0;$nOffSet < count($arr);$nOffSet++)
{
echo "<td>".$arr[$nOffSet]."</td>";
}
}
echo "</tr>";
}
}
?>
</table>
<br>
<hr size=1 width=80%>
<div align=center style="font-size:12px">
<?
//首页和上一页的链接
if( $nNumRows>1 && $page>1)
{
$prevPage=$page-1;
echo " <a href=$PHP_SELF?page=1>首页</a> ";
echo " <a href=$PHP_SELF?page=$prevPage >上一页</a> ";
}
//下一页和末页的链接
if( $page>=1 && $page<$MaxPage)
{
$nextPage= $page+1;
echo " <a href=$PHP_SELF?page=$nextPage >下一页</a> ";
echo " <a href=$PHP_SELF?page=$MaxPage >末页</a> ";
}
?>
</div>
</body>
</html>
<html>
<head>
<title>PHP分页</title>
</head>
<body>
<?
$gPageSize= 50; //每页显示的记录数
$hostname = "localhost"; //mysql Server
$dbuser = "root"; //用户名
$dbpasswd = ""; //密码
//连接数据库
$id = mysql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");
//选择数据库
$db = mysql_select_db("数据库名",$id) or die("无法连接数据库!");
$query = "select * from 表名";
//执行查询语句
$rresult = mysql_query($query) or die("无法执行SQL:$query");
//$page变量标示当前显示的页
if(!isset($page)) $page=1;
if($page==0) $page=1;
//得到当前查询到的纪录数 $nNumRows
if(($nNumRows= mysql_num_rows($rresult))<=0)
{
echo "<p align=center>没有纪录";
exit;
};
//得到最大页码数MaxPage
$MaxPage = (int)ceil($nNumRows/$gPageSize);
if((int)$page > $MaxPage)
$page=$maxPage;
?>
<table align="center" width="80%" border=0> <tr><td><? echo "<font size=2>第
$page 页,共 $MaxPage 页</font>";?></td><td></td></tr></table>
<table align="center" width="80%" border="1" cellspacing="0" cellpadding="4" bordercolorlight="#CC9966" bgcolor="#00F2EE" bordercolordark="#FFFFFF" class="LZH">
<tr bgcolor="#F7F2ff" style="font-size:14.8px;font-weight:bold">
<?
//显示表格头
for($iCnt = 0; $iCnt < mysql_num_fields($rresult); $iCnt++)
{
echo "<td>".mysql_field_name($rresult,$iCnt)."</td>" ;
}
?>
</tr>
<?
//根据偏移量($page - 1)*$gPageSize,运用mysql_data_seek函数得到要显示的页面
if( mysql_data_seek($rresult,($page-1)*$gPageSize) )
{
$i=0;
//循环显示当前纪录集
for($i;$i<$gPageSize;$i++)
{
echo "<tr style=\"font-size:12px\">";
//得到当前纪录,填充到数组$arr;
$arr= mysql_fetch_row($rresult);
if($arr)
{
//循环显示当前纪录的所有字段值
for($nOffSet = 0;$nOffSet < count($arr);$nOffSet++)
{
echo "<td>".$arr[$nOffSet]."</td>";
}
}
echo "</tr>";
}
}
?>
</table>
<br>
<hr size=1 width=80%>
<div align=center style="font-size:12px">
<?
//首页和上一页的链接
if( $nNumRows>1 && $page>1)
{
$prevPage=$page-1;
echo " <a href=$PHP_SELF?page=1>首页</a> ";
echo " <a href=$PHP_SELF?page=$prevPage >上一页</a> ";
}
//下一页和末页的链接
if( $page>=1 && $page<$MaxPage)
{
$nextPage= $page+1;
echo " <a href=$PHP_SELF?page=$nextPage >下一页</a> ";
echo " <a href=$PHP_SELF?page=$MaxPage >末页</a> ";
}
?>
</div>
</body>
</html>