php+m$sql server2000,郁闷中,谁有通用的分页实现类啊? http://www.csdn.net/Expert/FAQ/FAQ_Index.asp?id=4694 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.csdn.net/expert/topic/970/970397.xml?temp=.4401819 这是我写的一个函数:<?php// +-------------------------------------------------------------------------------------+// | function page ($select, $id, $no, $page_count, $dbname, $tablename) |// | 1。$select是mysql语句.例:select * from wang order by id desc |// | 2。$id是数据库id |// | 3。$no是你要查看的页数 |// | 4。$page_count是一页有多少行组成 |// | 5。$dbname是数据库的名称 |// | 6。$tablename是数据库表的名称 |// +-------------------------------------------------------------------------------------+// | 程序功能及方法: |// | 定义好六个变量,调用函数page你将得到一个数组,该数组由四个值组成, |// | 'page_count'是共有多少页,'pre_page'是上一页是第几页,'down_page'是下一页是第几页, |// | 'data_page'是数据库中的数据 |// +-------------------------------------------------------------------------------------+// | 返回数据: |// | 如想打印你得到的数据,$变量['你需要的'],如:你想看共有多少页,$变量['page_count']即可; |// | 如想要数据库的数据,则需要做循环, |// | 如:while ($row = @mysql_fetch_object($b['data_page'])), |// | $row就是你想要的所有数据,打印出来即可 |// +-------------------------------------------------------------------------------------+function Page ($select, $id, $no, $page_count, $dbname, $tablename){ // +----------------------------------------------------+ // | 认证$page_count是否小于一 | if ($page_count < 1) { print "不能小于一"; exit; } // +----------------------------------------------------+ // +----------------------------------------------------+ // | 认证$id是否真 | if (!$id) { print '数据库不存在'; exit; } // +----------------------------------------------------+ $query = "select count(*) as " . $dbname . " from " . $tablename; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result); $rows_count = $row["$dbname"]; //$resrlt = @mysql_query($select); //sql语句执行 //$rows_count = @mysql_num_rows($resrlt); //统计行数 $rows = ceil($rows_count / $page_count); //获取页数 settype($no, 'integer'); //将$page的类型设为integer $no --; // +----------------------------------------------------+ // | 认证$no是否符合条件 | if ($no < 0) { $no = 0; } else if ($no > $rows - 1) { //$no = $rows - 1; print "没有这一页的数据"; exit; } // +----------------------------------------------------+ $start = $no * $page_count; //获取从第几行开始读 $reclue = @mysql_query($select." limit ".$start.",".$page_count); //获取数据 if ($no < $rows - 1) { $no2 = $no + 2; //获取下一页 } if ($no != 0) { $no1 = $no; //获取上一页 } $a['page_count'] = $rows; $a['pre_page'] = $no1; $a['down_page'] = $no2; $a['data_page'] = $reclue; return $a;}?> <? //【警告】:未经许可请勿随便修改 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // // 【文件名】: c_mysql_page.inc // 【作 用】: MySQL分页函数类 // 【作 者】: 天灰 // // 【最后修改日期】: 2001/07/16[cxx] // 【变量定义规则】:‘C_’=字符型,‘I_’=整型,‘N_’=数字型,‘L_’=布尔型,‘A_’=数组型 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // ※c_mysql_page() 构造函数,设置分页初始参数 // ※page_standard() 分页显示函数(标准型) // ※GetRecordStartEnd() 获得取记录的开始结束位置 // ※getmaxpage() 获得记录集的最大页数 // ※checkpage() 检查当前页数是否在0和最大页数之间 //------------------------------------------------------------------------------------------ class c_mysql_page { //------------------------------------------------------------------------------------------ // 变量定义 //------------------------------------------------------------------------------------------ var $I_pagesize = 10; //每页记录数 var $C_width = '90%'; //表格宽度 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // 函数名:c_mysql_page ($I_pagesize, $c_width) // 作 用:构造函数,设置分页初始参数 // 参 数:$I_pagesize, $c_width // 返回值:变量 // 备 注:构造函数随着类的建立而自动执行 //------------------------------------------------------------------------------------------ function c_mysql_page ($I_pagesize=10, $C_width='85%') { if (isset($I_pagesize)){$this -> I_pagesize = $I_pagesize;} if (isset($C_width)){$this -> C_width = $C_width;} } //------------------------------------------------------------------------------------------ // 函数名:page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="") // 作 用:分页显示函数(标准型) // 参 数:$I_sumrecord 记录总数 // $C_url URL // $C_page URL后的参数 // $C_otherpara URL后的参数2 // $bgcolor 表格的背景颜色 // 返回值:<table> // 备 注:无 //------------------------------------------------------------------------------------------ function page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="",$bgcolor="") { //检查参数 if ((!$I_sumrecord) || (!$C_page)){AlertExit("参数不全!");} global $PHP_SELF,$$C_page; //全局变量$C_page //检测$I_pagesize是否合法 if($this -> I_pagesize < 1){AlertExit("请设定每页的记录数!");} if($I_sumrecord < 1){return false;} //检测总记录数 if($C_url == "self"){$C_url = $PHP_SELF;} //设置URL $I_page = $$C_page; //重新赋当前页值 $I_maxpage = $this -> getmaxpage($I_sumrecord); //取出总页数 $I_page = $this -> checkPage($I_maxpage,$I_page); //检查当前页号 //显示表 echo "<table align=center width=". $this -> C_width ." bgcolor=". $bgcolor .">"; echo "<tr>"; echo "<td align=left>共<font color=red><b>" . $I_sumrecord. "</b></font>条主题 当前第<font color=red><b>" . $I_page . "/". $I_maxpage. "</b></font>页</td>"; if ($I_maxpage > 1) { echo "<td align=right>"; if($I_page > 1 && $I_page < $I_maxpage) { echo "<a href= $C_url?$C_page=1&$C_otherpara>首页</a> "; $pre=$I_page-1; echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a> "; $next=$I_page+1; echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a> "; echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a> "; } elseif($I_page == 1) { $next = $I_page+1; echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a> "; echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a> "; } elseif($I_page == $I_maxpage) { echo "<a href=$C_url?$C_page=1&$C_otherpara>首页</a> "; $pre=$I_page-1; echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a> "; } //显示select // echo "转到"; // echo "<SELECT style=font-size:9pt NAME=gopage class='ff' OnChange=WindowLocation($C_url,$C_otherpara,$C_page)>";//OnChange=".WindowLocation($C_url,$C_otherpara,$C_page)." // for($i=1;$i <= $I_maxpage;$i++) // { //如$i==$I_page,此选项选中(selected) // if($i == $I_page){echo "<option value=$i selected>$i </option>";} // else{echo "<option value=$i>$i </option>";} // } // echo "</SELECT>页</td>"; } echo "</tr>"; echo "</table>"; } //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // 函数名:GetRecordStartEnd($I_page) // 作 用:获得取记录的开始结束位置 // 参 数:$I_page 当前页 // 返回值:全局变量$I_rowstart,$I_pagesize // 备 注:无 //------------------------------------------------------------------------------------------ function GetRecordStartEnd($I_page) { global $I_rowstart; global $I_pagesize; $I_rowstart = ($I_page-1)*$this -> I_pagesize; $I_pagesize = $this -> I_pagesize; } //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // 函数名:getmaxpage($intRecordNum) // 作 用:获得记录集的最大页数 // 参 数:$I_sumrecord 记录总数 // 返回值:最大页数$I_maxpage(整型) // 备 注:无 //------------------------------------------------------------------------------------------ function getmaxpage($I_sumrecord) { if (!$I_sumrecord){AlertExit("参数不全!");}//检查参数 $I_maxpage = ceil($I_sumrecord / $this -> I_pagesize); return $I_maxpage; } //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // 函数名:checkpage($I_maxpage,$I_page) // 作 用:检查当前页数是否在0和最大页数之间 // 参 数:$I_maxpage 最大页数 // $I_page 当前页数 // 返回值:当前页数$I_page(整型) // 备 注:无 //------------------------------------------------------------------------------------------ function checkpage($I_maxpage,$I_page) { if($I_maxpage == 0){$I_page = $I_maxpage;} if ($I_page < 1){$I_page = vivanboy(被迫早起的鸟儿).太感谢你了,我看你的方法应该可以实现,虽然我还没有仔细看wangxiangjun_sun() ,anziqi(枫叶无情)你们给的MYSQL的哦,可能没看清楚我的问题:)我在挂一天,然后结贴 至于存储过程。要用到临时表,将查询出来的纪录全部倒入到临时表,这个临时表比查询结果集多一个id(identity(1,1))字端,主要就是靠这个id字段来选出当前页的纪录,然后返回。select * into #TmpTable from tabaleNamealter table #TmpTable add id int identity(1,1) primary key select * 效率是不是很低? 用php的mail函数发邮件,如何设置阅读回执? 求sql语句 求解一个问题 求方法,截取字符串中的文字 用户登陆出错,求教 刚做了一个网上冲印的网站,散分 问下查询的问题 简单问题:以.htm结尾的文件就不能执行其中内嵌的php代码吗? 高难度问题:如何将WORD文档转换成HTML文档,急用!!! 一个win2000+IIS+PHP+MYsql的配置问题 请问在WIN98下装PHP4.0.5的问题!!!(请各位老师帮忙)??
<?php
// +-------------------------------------------------------------------------------------+
// | function page ($select, $id, $no, $page_count, $dbname, $tablename) |
// | 1。$select是mysql语句.例:select * from wang order by id desc |
// | 2。$id是数据库id |
// | 3。$no是你要查看的页数 |
// | 4。$page_count是一页有多少行组成 |
// | 5。$dbname是数据库的名称 |
// | 6。$tablename是数据库表的名称 |
// +-------------------------------------------------------------------------------------+
// | 程序功能及方法: |
// | 定义好六个变量,调用函数page你将得到一个数组,该数组由四个值组成, |
// | 'page_count'是共有多少页,'pre_page'是上一页是第几页,'down_page'是下一页是第几页, |
// | 'data_page'是数据库中的数据 |
// +-------------------------------------------------------------------------------------+
// | 返回数据: |
// | 如想打印你得到的数据,$变量['你需要的'],如:你想看共有多少页,$变量['page_count']即可; |
// | 如想要数据库的数据,则需要做循环, |
// | 如:while ($row = @mysql_fetch_object($b['data_page'])), |
// | $row就是你想要的所有数据,打印出来即可 |
// +-------------------------------------------------------------------------------------+
function Page ($select, $id, $no, $page_count, $dbname, $tablename)
{
// +----------------------------------------------------+
// | 认证$page_count是否小于一 |
if ($page_count < 1) {
print "不能小于一";
exit;
}
// +----------------------------------------------------+
// +----------------------------------------------------+
// | 认证$id是否真 |
if (!$id) {
print '数据库不存在';
exit;
}
// +----------------------------------------------------+ $query = "select count(*) as " . $dbname . " from " . $tablename;
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
$rows_count = $row["$dbname"];
//$resrlt = @mysql_query($select); //sql语句执行
//$rows_count = @mysql_num_rows($resrlt); //统计行数
$rows = ceil($rows_count / $page_count); //获取页数
settype($no, 'integer'); //将$page的类型设为integer
$no --; // +----------------------------------------------------+
// | 认证$no是否符合条件 |
if ($no < 0) {
$no = 0;
} else if ($no > $rows - 1) {
//$no = $rows - 1;
print "没有这一页的数据";
exit;
}
// +----------------------------------------------------+ $start = $no * $page_count; //获取从第几行开始读
$reclue = @mysql_query($select." limit ".$start.",".$page_count); //获取数据
if ($no < $rows - 1) {
$no2 = $no + 2; //获取下一页
}
if ($no != 0) {
$no1 = $no; //获取上一页
}
$a['page_count'] = $rows;
$a['pre_page'] = $no1;
$a['down_page'] = $no2;
$a['data_page'] = $reclue;
return $a;
}
?>
//【警告】:未经许可请勿随便修改
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//
// 【文件名】: c_mysql_page.inc
// 【作 用】: MySQL分页函数类
// 【作 者】: 天灰
//
// 【最后修改日期】: 2001/07/16[cxx]
// 【变量定义规则】:‘C_’=字符型,‘I_’=整型,‘N_’=数字型,‘L_’=布尔型,‘A_’=数组型
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// ※c_mysql_page() 构造函数,设置分页初始参数
// ※page_standard() 分页显示函数(标准型)
// ※GetRecordStartEnd() 获得取记录的开始结束位置
// ※getmaxpage() 获得记录集的最大页数
// ※checkpage() 检查当前页数是否在0和最大页数之间
//------------------------------------------------------------------------------------------
class c_mysql_page
{
//------------------------------------------------------------------------------------------
// 变量定义
//------------------------------------------------------------------------------------------
var $I_pagesize = 10; //每页记录数
var $C_width = '90%'; //表格宽度
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------
// 函数名:c_mysql_page ($I_pagesize, $c_width)
// 作 用:构造函数,设置分页初始参数
// 参 数:$I_pagesize, $c_width
// 返回值:变量
// 备 注:构造函数随着类的建立而自动执行
//------------------------------------------------------------------------------------------
function c_mysql_page ($I_pagesize=10, $C_width='85%')
{
if (isset($I_pagesize)){$this -> I_pagesize = $I_pagesize;}
if (isset($C_width)){$this -> C_width = $C_width;}
} //------------------------------------------------------------------------------------------
// 函数名:page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="")
// 作 用:分页显示函数(标准型)
// 参 数:$I_sumrecord 记录总数
// $C_url URL
// $C_page URL后的参数
// $C_otherpara URL后的参数2
// $bgcolor 表格的背景颜色
// 返回值:<table>
// 备 注:无
//------------------------------------------------------------------------------------------
function page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="",$bgcolor="")
{
//检查参数
if ((!$I_sumrecord) || (!$C_page)){AlertExit("参数不全!");}
global $PHP_SELF,$$C_page; //全局变量$C_page
//检测$I_pagesize是否合法
if($this -> I_pagesize < 1){AlertExit("请设定每页的记录数!");}
if($I_sumrecord < 1){return false;} //检测总记录数
if($C_url == "self"){$C_url = $PHP_SELF;} //设置URL
$I_page = $$C_page; //重新赋当前页值
$I_maxpage = $this -> getmaxpage($I_sumrecord); //取出总页数
$I_page = $this -> checkPage($I_maxpage,$I_page); //检查当前页号
//显示表
echo "<table align=center width=". $this -> C_width ." bgcolor=". $bgcolor .">";
echo "<tr>";
echo "<td align=left>共<font color=red><b>" . $I_sumrecord. "</b></font>条主题 当前第<font color=red><b>" . $I_page . "/". $I_maxpage. "</b></font>页</td>";
if ($I_maxpage > 1)
{
echo "<td align=right>";
if($I_page > 1 && $I_page < $I_maxpage)
{
echo "<a href= $C_url?$C_page=1&$C_otherpara>首页</a> ";
$pre=$I_page-1;
echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a> ";
$next=$I_page+1;
echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a> ";
echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a> ";
}
elseif($I_page == 1)
{
$next = $I_page+1;
echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a> ";
echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a> ";
}
elseif($I_page == $I_maxpage)
{
echo "<a href=$C_url?$C_page=1&$C_otherpara>首页</a> ";
$pre=$I_page-1;
echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a> ";
}
//显示select
// echo "转到";
// echo "<SELECT style=font-size:9pt NAME=gopage class='ff' OnChange=WindowLocation($C_url,$C_otherpara,$C_page)>";//OnChange=".WindowLocation($C_url,$C_otherpara,$C_page)."
// for($i=1;$i <= $I_maxpage;$i++)
// {
//如$i==$I_page,此选项选中(selected)
// if($i == $I_page){echo "<option value=$i selected>$i </option>";}
// else{echo "<option value=$i>$i </option>";}
// }
// echo "</SELECT>页</td>";
}
echo "</tr>";
echo "</table>";
}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// 函数名:GetRecordStartEnd($I_page)
// 作 用:获得取记录的开始结束位置
// 参 数:$I_page 当前页
// 返回值:全局变量$I_rowstart,$I_pagesize
// 备 注:无
//------------------------------------------------------------------------------------------
function GetRecordStartEnd($I_page)
{
global $I_rowstart;
global $I_pagesize;
$I_rowstart = ($I_page-1)*$this -> I_pagesize;
$I_pagesize = $this -> I_pagesize;
}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// 函数名:getmaxpage($intRecordNum)
// 作 用:获得记录集的最大页数
// 参 数:$I_sumrecord 记录总数
// 返回值:最大页数$I_maxpage(整型)
// 备 注:无
//------------------------------------------------------------------------------------------
function getmaxpage($I_sumrecord)
{
if (!$I_sumrecord){AlertExit("参数不全!");}//检查参数
$I_maxpage = ceil($I_sumrecord / $this -> I_pagesize);
return $I_maxpage;
}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// 函数名:checkpage($I_maxpage,$I_page)
// 作 用:检查当前页数是否在0和最大页数之间
// 参 数:$I_maxpage 最大页数
// $I_page 当前页数
// 返回值:当前页数$I_page(整型)
// 备 注:无
//------------------------------------------------------------------------------------------
function checkpage($I_maxpage,$I_page)
{
if($I_maxpage == 0){$I_page = $I_maxpage;}
if ($I_page < 1){$I_page =
alter table #TmpTable add id int identity(1,1) primary key