class分页类连接数据库类

custom.class.inc.php

<?php
// 连接数据库的类
class ConnDB
{
  var $dbtype;
  var $host;
  var $usr;
  var $pwd;
  var $dbname;
  var $conn;
  // 构造方法
  function ConnDB($dbtype,$host,$user,$pwd,$dbname)
  {
    $this->dbtype = $dbtype;
    $this->host = $host;
    $this->pwd = $pwd;
    $this->dbname = $dbname;
    $this->user = $user;
  }
  function GetConn()
  {
   $this->conn = mysql_connect($this->host,$this->user,$this->pwd) or die("数据库服务器连接错误".mysql_error()); 
   mysql_select_db($this->dbname,$this->conn) or die("数据库访问错误".mysql_error());
   mysql_query("set names 'utf8'");
   return $this->conn;
  }
  function __destruct()
  {
   $this->CloseDB(); 
  }
  function CloseDB()
  {
   mysql_close($this->conn);
  }
  
}
// 数据库操作类
class OperateDB
{
 function Execsql($sql,$conn)
 {
   $sqltype = strtolower(substr(trim($sql),0,6));// 截取sql语句中的前6个字符串,并转换成小写
   $result = mysql_query($sql,$conn);// 执行sql语句
   $calback_arrary = array();// 定义二维数组
   if ("select" == $sqltype)// 判断执行的是select语句
   {
    
    if (false == $result)
    {
     return false; 
    }
    else if (0 == mysql_num_rows($result))
    {
     return false;
    }
    else
    {
     while($result_array = mysql_fetch_array($result))
     {
     array_push($calback_arrary, $result_array);
     }
     return $calback_arrary;// 成功返回查询结果的数组 
    }
   }
   else if ("update" == $sqltype || "insert" == $sqltype || "delete" == $sqltype)
   {
     if ($result)
     {
      return true;
     }
     else
     {
      return false;
     }
   }
 } 
}

// 数据分页类
class PageAlg
{
 var $pagesize;// 每页显示的条数
 var $nowpage;// 当前页
 var $conn;// 数据库连接
 var $sqlstr;// sql语句
 var $pagetotal;// 获取当前页显示的记录数
 var $pagecount;// 总的条数
 var $result;// 执行查询语句的结果
 var $arrays;// 返回查询到的数据二维数组
 public function GetData($sqlstr,$conn,$pagesize,$nowpage)
 {
  $this->arrays = array();// 定义数组返回当前页的数据
  if (!isset($nowpage) || $nowpage=="" || 0==$nowpage)// 如果当前页的变量值为空或0
  {
   $this->nowpage = 1;// 则判断当前页为第一页
  }
  else
  {
   $this->nowpage = $nowpage;// 否则当前页为传进的值
  }
  $this->pagesize = $pagesize;// 定义每页显示数据条数
  $this->conn = $conn;
  $startIndex = $this->pagesize*($this->nowpage-1);
  $this->sqlstr = $sqlstr." limit $startIndex,$this->pagesize";
  $this->result = mysql_query($this->sqlstr,$conn);
  $this->sqlstr = $sqlstr;
  if (false == $this->result)// 查询数据库失败!!
  {
   return false;
  }
  $this->pagetotal = mysql_num_rows($this->result);// 获取查到的条数,不一定都是pagesize这么多条
  if (0 == $this->pagetotal)// 查询到的为0条说明数据库中不存在数据
  {
   return false;
  }
  else if ($this->pagetotal <= $this->pagesize)
  {
   
  }
  while($result_array = mysql_fetch_array($this->result))
  {
   array_push($this->arrays,$result_array);// 把数据增加到二维数组中 
  }
  // 返回二维数组
  return $this->arrays;
 }
 public function Showpage($contentname,$unit,$anotersearchstr,$class)
 {
  $allrs = mysql_query($this->sqlstr,$this->conn);// 查询数据库总改表的所有数据
  $record = mysql_num_rows($allrs);// 获得总的记录数
  $pagecount = ceil($record/$this->pagesize);//计算总的页数.2.22取3
        $str.= "共有".$contentname."&nbsp;".$record."&nbsp;".$unit."&nbsp;每页显示&nbsp;".$this->pagesize."&nbsp;".$unit."&nbsp;第&nbsp;".$this->nowpage."&nbsp;页/共&nbsp;".$pagecount."&nbsp;页"; 
  $str.="&nbsp;&nbsp;&nbsp;&nbsp;";
  $str.="<a href=".'"'.$_SERVER["PHP_SELF"]."?page=1".$anothersearchstr.'"'."class=".$class.">首页</a>";
  $str.="&nbsp;";
  if (($this->nowpage-1)<=0)
  {
   $str.="<a href=".'"'.$_SERVER['PHP_SELF']."?page=1".$anothersearchstr.'"'."class=".$class.">上一页</a>";
  }
  else
  {
   $str.="<a href=".'"'.$_SERVER['PHP_SELF']."?page=".($this->nowpage-1).$anothersearchstr.'"'."class=".$class.">上一页</a>";
   
  }
  $str.="&nbsp;";
  if (($this->nowpage+1)>=$pagecount)
  {
    $str.="<a href=".'"'.$_SERVER['PHP_SELF']."?page=".$pagecount.$anothersearchstr.'"'."class=".$class.">下一页</a>"; 
  }
  else
  {
   
    $str.="<a href=".'"'.$_SERVER['PHP_SELF']."?page=".($this->nowpage+1).'"'.$anothersearchstr."class=".$class.">下一页</a>"; 
  }
  
  $str.="&nbsp;";
  $str.="<a href=".'"'.$_SERVER['PHP_SELF']."?page=".$pagecount.$anothersearchstr.'"'."class=".$class.">尾页</a>"; 
  if (count($this->arrays)==0 || $this->result==false)
  {
   return "";
  }
  else
  {
   return $str;
  }


 }
}

?>

引用:

conndb.inc.php

<?php

require("custom.class.inc.php");
$ccon = new ConnDB("mysql","localhost","root","root","think_cms");
$operatedb = new OperateDB();
$conn = $ccon->GetConn();
$page = new PageAlg();

?>

<?php

require("conndb.inc.php");

$sqlstr = "select * from cms_post";
$result = $page->GetData($sqlstr,$conn,2,$_GET['page']);
if ($result)
{
foreach($result as $show)
{
 echo $show['post_body']."<br>";
}
 echo $page->ShowPage("公告","条","","a1");
}
else
 echo '数据库没有数据!!!';

 

?>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Bootstrap本身并不提供连接数据库的功能,但是可以使用一些其他的工具和技术来实现连接数据库并实现分页功能。以下是一些常用的方法: 1. 使用服务器端脚本语言如PHP、Node.js等连接数据库,查询数据并生成分页HTML代码。然后将生成的HTML代码嵌入到Bootstrap页面中。例如,使用PHP和MySQL实现分页: ```php <?php // 连接MySQL数据库 $mysqli = new mysqli("localhost", "username", "password", "database"); // 查询数据 $result = $mysqli->query("SELECT COUNT(*) FROM mytable"); $row = $result->fetch_assoc(); $total = $row['COUNT(*)']; // 数据总数 $pagesize = 10; // 每页显示的记录数 $pagecount = ceil($total / $pagesize); // 总页数 if (!isset($_GET['page'])) { $page = 1; } else { $page = intval($_GET['page']); } $start = ($page - 1) * $pagesize; // 当前页的起始记录 $result = $mysqli->query("SELECT * FROM mytable LIMIT $start, $pagesize"); // 生成分页HTML代码 $html = '<ul class="pagination">'; if ($page > 1) { $html .= '<li class="page-item"><a class="page-link" href="?page='.($page-1).'">上一页</a></li>'; } else { $html .= '<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>'; } for ($i = 1; $i <= $pagecount; $i++) { if ($i == $page) { $html .= '<li class="page-item active"><a class="page-link" href="#">'.$i.'</a></li>'; } else { $html .= '<li class="page-item"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>'; } } if ($page < $pagecount) { $html .= '<li class="page-item"><a class="page-link" href="?page='.($page+1).'">下一页</a></li>'; } else { $html .= '<li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>'; } $html .= '</ul>'; // 输出表格和分页 echo '<table class="table">'; echo '<thead><tr><th>ID</th><th>Name</th></tr></thead>'; echo '<tbody>'; while ($row = $result->fetch_assoc()) { echo '<tr><td>'.$row['id'].'</td><td>'.$row['name'].'</td></tr>'; } echo '</tbody>'; echo '</table>'; echo $html; // 关闭数据库连接 $mysqli->close(); ?> ``` 2. 使用JavaScript框架如AngularJS、React等连接数据库并生成分页HTML代码。这种方法通常需要编写一些JavaScript代码、HTML模板和服务器端API接口来实现。例如,使用AngularJS和Node.js实现分页: ```html <div ng-app="myApp" ng-controller="myCtrl"> <table class="table"> <thead> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <tbody> <tr ng-repeat="item in data"> <td>{{item.id}}</td> <td>{{item.name}}</td> </tr> </tbody> </table> <ul class="pagination"> <li ng-class="{disabled: page == 1}"><a href="#" ng-click="prev()">上一页</a></li> <li ng-class="{active: p == page}" ng-repeat="p in pages"><a href="#" ng-click="goto(p)">{{p}}</a></li> <li ng-class="{disabled: page == pageCount}"><a href="#" ng-click="next()">下一页</a></li> </ul> </div> <script src="https://cdn.bootcss.com/angular.js/1.7.5/angular.min.js"></script> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope, $http) { $scope.pageSize = 10; $scope.pageCount = 0; $scope.page = 1; $scope.pages = []; $scope.loadData = function() { var start = ($scope.page - 1) * $scope.pageSize; $http.get('/api/data?start=' + start + '&pagesize=' + $scope.pageSize) .then(function(response) { $scope.data = response.data; }); }; $scope.loadPage = function(page) { if (page < 1 || page > $scope.pageCount) { return; } $scope.page = page; $scope.loadData(); }; $scope.prev = function() { $scope.loadPage($scope.page - 1); }; $scope.next = function() { $scope.loadPage($scope.page + 1); }; $scope.goto = function(page) { $scope.loadPage(page); }; $http.get('/api/count') .then(function(response) { $scope.pageCount = Math.ceil(response.data / $scope.pageSize); $scope.pages = []; for (var i = 1; i <= $scope.pageCount; i++) { $scope.pages.push(i); } $scope.loadData(); }); }); </script> ``` 在上面的示例中,`$http`服务用于连接Node.js服务器端API接口获取数据和总记录数。服务器端API接口可以使用Express框架编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值