<?
$niandu=$_GET['niandu'];$link=mssql_connect("MyServer2k","data","1234");
mssql_select_db("data",$link);
$sql="select id,niandu,yuefen,name,time from a where niandu='$_GET[niandu]' order by yuefen desc";
$dataset=mssql_query($sql,$link);
$totalCount=mssql_num_rows($dataset);
$P=$_GET[P];
if(!$P|| $P<1) $P=1;$PageNum=15;
$start = $PageNum * ($P-1);
?>
<table width="750"  border="0" align="center" cellpadding="0" cellspacing="1">
  <tr align="center">
    <td width="10%" height="20">序号</td>
<td width="10%" height="20">年度</td>
<td width="10%" height="20">月份</td>
         <td width="25%" height="20">名称</td>
         <td width="20%" height="20">发布时间</td>
<td width="20%" height="20">管理</td>
  </tr>
<?
  
$sql1="select TOP ".$PageNum*($P)." id,niandu,yuefen,name,time from a where niandu='$_GET[niandu]' order by yuefen desc";
$dataset1=mssql_query($sql1,$link);
$count=mssql_num_rows($dataset1);for ($i=$start;$i<$count;$i++){ 
   list($id,$niandu,$yuefen,$name,$time)=mssql_fetch_row($dataset1);?>
  <tr>
         <td height="20"><? echo $i+1?></td>
<td height="20">&nbsp;<? echo $niandu?></td>
<td height="20">&nbsp;<? echo $yuefen?></td>
         <td height="20">&nbsp;<? echo $name?></td>
<td height="20">&nbsp;<? echo $time?></td>
  </tr>
<? 
}
?>
</table>
15条记录一页,不知道为什么翻到下页时总是取表的第1条记录而不是第16条,请大家帮忙看看

解决方案 »

  1.   

    top 只是取多少条数据 当然top加多子查询也是可以分页 如果是sql server 2000以后的数据库用 ROW_NUMBER() 实现来得好
      

  2.   

    接上面
     <tr>
        <td align="center">&nbsp;<?=GlobalClass::turnPage($totalCount,$PHP_SELF."?&niandu=$_GET[niandu]&");?></td>
    </tr>function turnPage($Total,$href,$P,$PageNum,$NotOut=false)
    {
    $page=$Total/$PageNum;
    $totalP=(int)$page;
    if($totalP!=$page)
    $totalP=$totalP+1;
    if(!$P || $P<1) $P=1;
    if($P>$totalP && $totalP) $P=$totalP; if($Total)
    {
    $Out1="共有".$Total."条记录 当前第".$P."页/共".$totalP."页";
    if($P>1)
    {
    $Out2.="<a href='$href"."P=1'>首页</a>&nbsp;";
    $Out2.="<a href='$href"."P=".($P-1)."'>上页</a>&nbsp;";
    }
    else
    {
    $Out2.="首页&nbsp;";
    $Out2.="上页&nbsp;";
    }
    if($P!=$totalP)
    {
    $Out2.="<a href='$href"."P=".($P+1)."'>下页</a>&nbsp;";
    $Out2.="<a href='$href"."P=$totalP'>尾页</a>&nbsp;";
    }
    else
    {
    $Out2.="下页&nbsp;";
    $Out2.="尾页&nbsp;";
    }
    }
    return $Out2;
    }
      

  3.   

    $sql1="select TOP ".($start+$PageNum*($P))." id,niandu,yuefen,name,time from a where niandu='$_GET[niandu]' 
    试一试
      

  4.   

    http://wenku.baidu.com/view/603ba66c58fafab069dc0222.html
      

  5.   

    mssql 是 sybase 家族成员,另外还有 oracle 等
    他们都不提供 limit 子句,而只有 top 子句你需要这样写
    select top 每页行数 * from ( select top 页数*每页行数 * from 表 order by id desc )
      

  6.   


    $sql1="select TOP ".$PageNum." * from ( select top ".$PageNum*($P)." * from a) where niandu='$_GET[niandu]' order by yuefen desc";出现Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near the keyword 'where'. (severity 15) 
      

  7.   


    $sql1="select TOP ".$PageNum." * from ( select top ".$PageNum*($P)." * from a) where niandu='$_GET[niandu]' order by yuefen desc";改为$sql1="select TOP ".$PageNum." * from ( select top ".$PageNum*($P)." * from a) where niandu='".$_GET[niandu]."' order by yuefen desc";