免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1640 | 回复: 1
打印 上一主题 下一主题

[数据库 分页] php+mssql分页问题 在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-11 16:28 |只看该作者 |倒序浏览

  1. <?php
  2. $query_news_count="select count(id) from news where type='$type'";//读取新闻总数
  3. if($sortid) $query_news_count.=" and sortid='$sortid' ";
  4. if($keyword) $query_news_count.=" and BINARY(title) like '%$keyword%' ";//查询条件
  5. $res_news_count=mssql_query($query_news_count);
  6. $row_news_count=mssql_fetch_array($res_news_count);
  7. $news_count=$row_news_count[0];//统计新闻的总数

  8. $page=ceil($news_count/2);//计算出总页数
  9. if ($page==0) $page=1;
  10. if (empty($gopage)) $gopage=0;//如果跳转页变量未设置则将其置0
  11. $offset=$gopage*2;//计算出偏移量

  12. $query_news="select top 2 id,title,tm from news where type='$type'";//读取文章列表
  13. if($keyword) $query_news.=" and BINARY(title) like '%$keyword%' ";//查询
  14. if($sortid) $query_news.=" and sortid='$sortid' ";
  15. $query_news.=" order by id desc";//读取文章列表
  16. $res_news=mssql_query($query_news);
  17. mssql_data_seek($res_news,$offset);
  18. ?>;

  19. <table width="150" border="1" cellpadding="1" cellspacing="0" bordercolorlight="#000000" bordercolordark="#FFFFFF">;
  20.                       <tr>;
  21.                         <td width="100">;类别</td>;
  22.                         <td width="50">;操作</td>;
  23.                       </tr>;
  24.                       <?php while($row_news_sort=mssql_fetch_array($res_news_sort)) { ?>;
  25.                       <tr>;
  26.                         <td nowrap>;<a href=<?php echo $PHP_SELF ?>;?sortid=<?php echo $row_news_sort[0]; ?>;&type=<?php echo $type ?>;>;<font <?php if($row_news_sort[0]==$sortid) echo "color=red"; ?>; style="font-size:12px ">;<?php echo $row_news_sort[1] ?>;</font>;</a>;</td>;
  27.                         <td nowrap>; [<a href="#alsoflying" onclick="window.open('news_sort_edit.php?sortid=<?php echo $row_news_sort[0] ?>;','','top=200,left=160,height=100, width=350, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no')">;改</a>;][<a href='<?php echo $_SERVER[PHP_SELF] ?>;?delsort=1&sortid=<?php echo $row_news_sort[0] ?>;&type=<?php echo $type ?>;' onclick='return alertmsg()'>;删</a>;] </td>;
  28.                       </tr>;
  29.                       <?php } ?>;
  30.                     </table>;

  31. <table width="600" height="35" border="0" align="center" cellpadding="0" cellspacing="0" style="font-size: 9pt">;
  32.                 <tr>;
  33.                   <td width="160">;<span class="f9b">;共<b>;<?php echo $news_count ?>;</b>;条信息</span>;</td>;
  34.                   <td width="379" align="center">;<?php if ($gopage!=0) { ?>;
  35.                       <a href=<?php echo $_SERVER[PHP_SELF] ?>;?gopage=0&sortid=<?php echo $sortid ?>;&type=<?php echo $type ?>;&keyword=<?php echo urlencode($keyword) ?>;>;第一页</a>;
  36.                       <?php } else { ?>;
  37.                       <font color="#999999">;第一页</font>;
  38.                       <?php } ?>;
  39.                       <?php if ($gopage!=0) { ?>;
  40.                       <a href=<?php echo $_SERVER[PHP_SELF] ?>;?gopage=<?php echo $gopage-1 ?>;&sortid=<?php echo $sortid ?>;&type=<?php echo $type ?>;&keyword=<?php echo urlencode($keyword) ?>;>;上一页</a>;
  41.                       <?php } else { ?>;
  42.                       <font color="#999999">;上一页</font>;
  43.                       <?php } ?>;
  44.                       <?php if ($gopage!=$page-1) { ?>;
  45.                       <a href=<?php echo $_SERVER[PHP_SELF] ?>;?gopage=<?php echo $gopage+1 ?>;&sortid=<?php echo $sortid ?>;&type=<?php echo $type ?>;&keyword=<?php echo urlencode($keyword) ?>;>;下一页</a>;
  46.                       <?php } else { ?>;
  47.                       <font color="#999999">;下一页</font>;
  48.                       <?php } ?>;
  49.                       <?php if ($gopage!=$page-1) { ?>;
  50.                       <a href=<?php echo $_SERVER[PHP_SELF] ?>;?gopage=<?php echo $page-1 ?>;&sortid=<?php echo $sortid ?>;&type=<?php echo $type ?>;&keyword=<?php echo urlencode($keyword) ?>;>;最后页</a>;
  51.                       <?php } else { ?>;
  52.                       <font color="#999999">;最后页</font>;
  53.                       <?php } ?>;
  54.                       <span class="f9b">;直接查看第
  55.                       <select name="select3" onChange="window.location='<?php echo $_SERVER[PHP_SELF] ?>;?gopage='+this.options[this.selectedIndex].value+'&sortid=<?php echo $sortid ?>;&type=<?php echo $type ?>;&keyword=<?php echo urlencode($keyword) ?>;'">;
  56.                         <?php for($i=1;$i<=$page;$i++) { ?>;
  57.                         <option value="<?php echo $i-1 ?>;" <?php if($gopage == $i-1) {?>;selected <?php } ?>;>;<?php echo $i ?>;</option>;
  58.                         <?php } ?>;
  59.                       </select>;
  60.       页</span>;</td>;
  61.                   <td width="61" align="right">;<span class="f9b">;<?php echo $gopage+1 ?>; / <?php echo $page ?>;</span>;</td>;
  62.                 </tr>;
  63.               </table>;
复制代码


这个分页是我根据php+mysql 改的
因为mssql里不能用limit
所以我用mssql_data_seek() 可是为什么到下一页数据就没有跳转呢
出现的错误是Warning: mssql_data_seek(): Bad row offset in E:\cd\web\admin\news_list.php on line 85

不知道怎么解决 在线等呀

论坛徽章:
0
2 [报告]
发表于 2005-08-18 02:18 |只看该作者

[数据库 分页] php+mssql分页问题 在线等

<?php

class DBSQL{
        var $querynum = 0;
        var $querylist = '';
        var $LinkId = 0;
        var $Insertid = 0;

        //connect('数据库主机','用户名','密码','数据库名','永久连接');
        function connect($dbhost="localhost", $dbuser, $dbpw, $dbname) {
                $this->;LinkId = @mssql_connect($dbhost, $dbuser, $dbpw) or die("无法连接主机";
                //选择连接数据库
                @mssql_select_db($dbname) or die("无法载入数据库";
        }
        //连接数据库结束

        //查询语句
        function query($sql) {
                if(eregi("UPDATE|DELETE",$sql)){
                        $query = @mssql_query($sql,$this->;LinkId);
                }else{
                        if(eregi("insert into",$sql)){$sql="$sql SELECT @@IDENTITY as fileId";$sqls='yes';}else{$sqls='no';}
                        $query = @mssql_query($sql,$this->;LinkId) or die($sql);
                }
                if($sqls=='yes'){
                        $insId = $this->;fetch_row($query);
                        $this->;Insertid=$insId[0];
                }
                $this->;sql_debug .= $sql.'<br>;';
                return $query;
        }

        //返回数组资料
        function fetch_array($query, $type=MYSQL_ASSOC) {
                $query = @mssql_fetch_array($query, $type);
                return $query;
        }

        //取得结果数据
        function result($query, $row) {
                $query = @mssql_result($query, $row);
                return $query;
        }

        //取得返回列的数目
        function num_rows($query) {
                $query = @mssql_num_rows($query);
                return $query;
        }

        //返回单列的各字段
        function fetch_row($query) {
                $query = @mssql_fetch_row($query);
                return $query;
        }

        //移动内部返回指针
        function data_seek($res,$num){
                return @mssql_data_seek($res,$num);

        }

        //返回最后一次使用 INSERT 指令的 ID
        function insert_id(){
          return $this->;Insertid;
        }

        //关闭数据库
        function dbclose() {
                return @mssql_close($this->;LinkId);
        }

        //释放返回占用内存
        function free_result(){
                return @mssql_free_result($this->;LinkId);
        }

/*---------------------------  分页函数  ---------------------------------*/
//分页
/*例子:
$info = $db->;limit("SELECT id,test FROM test",$_GET['page'],10);
$pages = $info['info'];                //获取分页信息
for($i=0;$i<$pages['nowlimit'];$i++){
        $show = $info[$i];
        echo $show['id']." - $show[test]<br>;";
}
echo $db->;multi($pages['nums'],$pages['limit'],$pages['nowpage'],$pages['pages'],'a.php?',1).'<br>;<br>;';

*/
//limit(sql语句 ,获取当前跳专页数,每页分的信息数,最大信息数[如果有责不查询数据库])
function limit($sql,$page='0',$limit=10,$maxs=''){
  $show = Array();
  $page = (int)trim($page);
  $limit = (int)trim($limit);
  $maxs = (int)trim($maxs);

  $query = $this->;query($sql);        //执行语句

  //分页处理开始
        $maxs==''? $Alls = $this->;num_rows($query)Alls = $maxs;                //处理最大信息数
        $MaxPages = (int)ceil($Alls/$limit);                                                        //处理分了几页
        if(!isset($page) || $page<=1){ $page=1;}                                                //$page变量标示当前显示的页
        if($page >; $MaxPages){ $page=$MaxPages; }                                                //$page变量标示当前显示的页
        $PageNum = ($page-1)*$limit;                                                                        //数据查询指针数
  //分页处理结束

        if($this->;data_seek($query,$PageNum)){
                for($i=0;$i<$limit;$i++){
                        $user = $this->;fetch_array($query);
                        if($user){
                                $show[] = $user;
                                $nowlimit += 1;                                //计算当前列出的信息数
                        }
                }
        }

        $show['info'] = array(
                                        "limit"=>;$limit,                //每页的分页数
                                        "nowlimit"=>;$nowlimit,        //列出当前的信息数
                                        "nowpage"=>;$page,                //当前页数
                                        "pages"=>;$MaxPages,                //分了几页
                                        "nums"=>;$Alls,                        //当前查询中最大信息数
                                        );
  return $show;
}

//分页处理
//multi(最大分页数, 每页多少信息数, 当前页数, 分页数量, 翻页地址)
function multi($num, $perpage, $curr_page, $pages, $mpurl,$style=1) {
  $multipage = '';
        if($num >; $perpage) {
                $page = 5;
                $offset = 2;

                $from = $curr_page - $offset;
                $to = $curr_page + $page - $offset - 1;
                if($page >; $pages) {
                        $from = 1;
                        $to = $pages;
                } else {
                        if($from < 1) {
                                $to = $curr_page + 1 - $from;
                                $from = 1;
                                if(($to - $from) < $page && ($to - $from) < $pages) {
                                        $to = $page;
                                }
                        } elseif($to >; $pages) {
                                $from = $curr_page - $pages + $to;
                                $to = $pages;
                                if(($to - $from) < $page && ($to - $from) < $pages) {
                                        $from = $pages - $page + 1;
                                }
                        }
                }
                switch($style){

                //样式1
                //共有 192 页 | 首 页 上一页 下一页 末 页
                  case'1':
                    if(($curr_page-1)<=1){$pt= 1;}else{$pt=$curr_page-1;}
                    if(($curr_page+1)>;=$pages){$pd=$pages;}else{$pd=$curr_page+1;}
                          $multipage .= "共 $pages 页 | <a href=\"$mpurl&page=1\">;首 页</a>; <a href=\"$mpurl&page=$pt\">;上一页</a>; <a href=\"$mpurl&page=$pd\">;下一页</a>; <a href=\"$mpurl&page=$pages\">;末 页</a>;";
                  break;
                }
        }else{

                $multipage .= "目前只有一页";
        }
  return $multipage;
}
}
?>;
以前一个同事写的简单的,呵呵,偶用几年没动过它了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP