zoukankan      html  css  js  c++  java
  • 如何利用【DataTable】结合自己本地数据库,使用表格

    如何利用【DataTable】结合自己本地数据库,使用表格

    我们都知道DataTable的使用与配置,平时我们都是用一个json文件来代替后台,但是实际上我们在与后台交互的时候,后台先取到数据库里面的信息,然后经过后台代码的处理,返回json格式或者其他数据格式,然后前台得到后再在页面中显示出来。我们一般用json文件代替后台数据会然我们忽略一些细节。
    下面我们就来讲解一下如何根据自己本地数据库和后台语言(mysql+php),将数据库中的信息显示在前端页面的表格里。


    这里需要用到:请将这些库提前准备好放到文件中
          jquery.dataTables.min.css
          jquery.dataTables.min.js
          jquery.min.js
          bootstrap.min.css
    另外用到:MySQL+PHP  (没有基础也没事,后面附有)


    1.创建数据库,SQL语句:
        create database zt_sign CHARSET=utf8;
        use zt_sign;
    2.创建表格,SQL语句:
        CREATE TABLE IF NOT EXISTS `signtime` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `name` varchar(32) NOT NULL,
          `time` date NOT NULL,
          `beginTime` char(255) NOT NULL,
          `endTime` char(255) NOT NULL,
          `thisTotal` char(255) NOT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=402 ;


    3.来看一下创建好的数据库表结构为:

    4.插入数据:
        这里我们准备了15条自己的数据,id是按顺序插入的
        SQL语句:


        INSERT INTO `signtime` (`id`, `name`, `time`, `beginTime`, `endTime`, `thisTotal`) VALUES
        (1, '小包', '2016-11-21', '2016-11-21 18:33:48', '2016-11-21 21:38:04', '3:4:17'),
        (2, '小莹', '2016-11-21', '2016-11-21 18:36:46', '2016-11-21 21:38:46', '3:2:0'),
        (3, '小朱', '2016-11-21', '2016-11-21 10:29:07', '2016-11-21 12:03:37', '1:34:30'),
        (4, '小孟', '2016-11-21', '2016-11-21 10:30:54', '2016-11-21 12:04:39', '1:33:45'),
        (5, '小强', '2016-11-21', '2016-11-21 12:39:28', '2016-11-21 15:42:29', '3:3:1'),
        (6, '小康', '2016-11-21', '2016-11-21 14:28:25', '2016-11-21 18:49:01', '4:20:36'),
        (7, '小丽', '2016-11-21', '2016-11-21 17:32:51', '2016-11-21 21:39:24', '4:6:33'),
        (8, '小苗', '2016-11-21', '2016-11-21 18:57:41', '2016-11-21 19:03:16', '0:5:35'),
        (9, '小伟', '2016-11-21', '2016-11-21 18:19:25', '2016-11-21 19:09:24', '0:49:59'),
        (10, '小明', '2016-11-21', '2016-11-21 13:57:59', '2016-11-21 19:17:55', '5:19:56'),
        (11, '小亚', '2016-11-21', '2016-11-21 15:22:07', '2016-11-21 19:43:09', '4:21:2'),
        (12, '小聂', '2016-11-21', '2016-11-21 17:51:58', '2016-11-21 20:09:15', '2:17:17'),
        (13, '小鑫', '2016-11-21', '2016-11-21 13:55:03', '2016-11-21 20:12:03', '6:17:0'),
        (14, '小贵', '2016-11-21', '2016-11-21 19:20:35', '2016-11-21 21:50:21', '2:29:46'),
        (15, '小伟', '2016-11-21', '2016-11-21 19:03:23', '2016-11-21 21:54:56', '2:51:33'),
        (16, '小邢', '2016-11-21', '2016-11-21 19:43:14', '2016-11-21 21:56:13', '2:12:59'),
        (17, '小静', '2016-11-28', '2016-11-28 16:31:36', '2016-11-28 17:06:32', '0:34:56'),
        (18, '小鑫', '2016-11-28', '2016-11-28 17:06:42', '2016-11-28 17:09:56', '0:3:14'),
        (19, '小康', '2016-11-28', '2016-11-28 15:02:24', '2016-11-28 17:43:42', '2:41:18'),
        (20, '小冬', '2016-11-30', '2016-11-30 14:00:36', '2016-11-30 15:20:38', '1:20:2');

    5.连接数据库,编写得到表signtime里的数据的代码,编写对数据进行处理的代码,将这些前期准备的操作代码放到mysql.class.php文件中。
      mysql.class.php文件代码如下:

     1 <?php
     2   header("content-type:text/html;charset=utf-8");
     3   class mysqlHelp
     4   {
     5       public $host;
     6       public $user;
     7       public $password;
     8       public $databaseName;
     9       public $conn;
    10       public $charset='UTF8';
    11       //构造函数
    12       public function __construct ($arrTemp)
    13       {
    14           $host=$this->host=$arrTemp['host'];
    15           $user=$this->user=$arrTemp['user'];
    16           $password=$this->password=$arrTemp['password'];
    17           $databaseName=$this->databaseName=$arrTemp['databaseName'];
    18           $this->conn=mysqli_connect($host,$user,$password,$databaseName) or die(mysqli_error($this->conn));
    19           mysqli_query($this->conn, "set names " . $this->charset);
    20       }
    21       //查询
    22       public function queryData($sql)
    23       {
    24           $res=mysqli_query($this->conn,$sql)or die(mysqli_error($this->conn));
    25           return $res;
    26       }
    27       //处理查询得到的数据
    28       public function getResult($sql){
    29           $resource=mysqli_query($this->conn,$sql) or die(mysqli_error($this->conn));//查询sql语句
    30           $res=array();
    31           while(($row=mysqli_fetch_assoc($resource))!=false){
    32               $res[]=$row;
    33           }
    34           return $res;//将查询到的所有数据返回到一个二维数组中;
    35       }
    36   }
    37   $arr=array(
    38       'host'=>'127.0.0.1',
    39       'user'=>'root',
    40       'password'=>'',   //注意这里我的数据库是没有设置密码,要改成自己数据库的密码
    41       'databaseName'=>'zt_sign'
    42   );
    43 ?>

    6.使用mysql.class.php文件中编写的代码,放到data.php中,作为DataTable的请求数据文件(类似于以前我们用的.json文件)

    1 <?php
    2   require 'mysql.class.php';
    3   $link = new mysqlHelp($arr);
    4   $sql="select id,name,time,beginTime,endTime,thisTotal from signtime";   //查询数据库表中数据
    5   $array=$link->getResult($sql);    //对查询的数据进行处理
    6   $json = json_encode($array);      //将得到的数据转换成json格式
    7   echo ('{"data":'.$json.'}'); //转换的json要以这种格式输出,才能被前台读取,不能直接输出,否则将报错,数据不能再表格中显示
    8   //echo $json;   这种输入方法是不正确的
    9 ?>

    7.上面后台(MySQL和PHP)代码已经写好,下面在前台使用DataTable,对DataTable进行配置,将代码放入到index.php中。
        index.php中代码如下:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     6     <title></title>
     7     <link rel="stylesheet" href="bootstrap.min.css">
     8     <link rel="stylesheet" href="jquery.dataTables.min.css">
     9     <style>
    10         #example tr>td{
    11             text-align: center;
    12         }
    13         .dataTables_scrollHead thead th {
    14             text-align: center !important;
    15         }
    16         td:first-child{
    17             color: #1abc9c;
    18         }
    19     </style>
    20 </head>
    21 <body>
    22   <div class="">
    23     <table id="example" class="display" cellspacing="0" width="99%">
    24         <thead>
    25             <tr style="height: 45px;">
    26                 <th>序号</th>
    27                 <th>姓名</th>
    28                 <th>日期</th>
    29                 <th>开始时间</th>
    30                 <th>结束时间</th>
    31                 <th>计时总计</th>
    32             </tr>
    33         </thead>
    34     </table>
    35 </div>
    36 <script type="text/javascript" src="jquery.min.js"></script>
    37 <script type="text/javascript"src="jquery.dataTables.min.js"></script>
    38 <script>
    39     $(document).ready(function() {
    40         $('#example').DataTable({
    41             "ajax":'data.php',
    42             /*这里添加了第43--50行,不加会报错,会出现DataTables warning*/
    43             "columns": [
    44                 {"data": "id", "title": "序号", "defaultContent": ""},
    45                 {"data": "name", "title": "姓名", "defaultContent": ""},
    46                 {"data": "time", "title": "日期", "defaultContent": ""},
    47                 {"data": "beginTime", "title": "开始时间", "defaultContent": ""},
    48                 {"data": "endTime", "title": "结束时间", "defaultContent": ""},
    49                 {"data": "thisTotal", "title": "计时总计", "defaultContent": ""}
    50             ],
    51             'bSort': false,
    52             "bInfo" : false,
    53             "sScrollX" : 500,
    54                     "bAutoWidth" : true,
    55                     "iDisplayLength" : 8,
    56                     "oLanguage": { //国际化配置
    57                     "sProcessing" : "正在获取数据,请稍后...",
    58                     "sLengthMenu" : "显示 _MENU_ 条",
    59                     "sZeroRecords" : "没有您要搜索的内容",
    60                     "sInfo" : "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
    61                     "sInfoEmpty" : "记录数为0",
    62                     "sInfoFiltered" : "(全部记录数 _MAX_ 条)",
    63                     "sInfoPostFix" : "",
    64                     "sSearch" : "",
    65                     "sUrl" : "",
    66                     "oPaginate": {
    67                         "sFirst" : "第一页",
    68                         "sPrevious" : "上一页",
    69                         "sNext" : "下一页",
    70                         "sLast" : "最后一页"
    71                     }
    72               },
    73           "fnInitComplete":function(oSettings, json) {
    74               $("#example_filter").addClass('col-lg-2 form-group');
    75               $("#example_filter input").addClass('col-lg-2 form-control');
    76           }
    77                 });
    78             $('#example_length').remove();
    79     });
    80 </script>
    81 </body>
    82 </html>

    说明:这个示例中只是用了DataTable的一些功能,很多还没有用到,本示例只是说明在真正与后台进行交互过程的注意事项。

    8.附加一些DataTable的详细配置:

      1     var docrTable = $('#docrevisontable').dataTable({  
      2                 "bProcessing" : true, //DataTables载入数据时,是否显示‘进度’提示  
      3                 "bServerSide" : true, //是否启动服务器端数据导入  
      4                 "bStateSave" : true, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态  
      5                 "bJQueryUI" : true, //是否使用 jQury的UI theme  
      6                 "sScrollY" : 450, //DataTables的高  
      7                 "sScrollX" : 820, //DataTables的宽  
      8                 "aLengthMenu" : [20, 40, 60], //更改显示记录数选项  
      9                 "iDisplayLength" : 40, //默认显示的记录数  
     10                 "bAutoWidth" : false, //是否自适应宽度  
     11                 //"bScrollInfinite" : false, //是否启动初始化滚动条  
     12                 "bScrollCollapse" : true, //是否开启DataTables的高度自适应,当数据条数不够分页数据条数的时候,插件高度是否随数据条数而改变  
     13                 "bPaginate" : true, //是否显示(应用)分页器  
     14                 "bInfo" : true, //是否显示页脚信息,DataTables插件左下角显示记录数  
     15                 "sPaginationType" : "full_numbers", //详细分页组,可以支持直接跳转到某页  
     16                 "bSort" : true, //是否启动各个字段的排序功能  
     17                 "aaSorting" : [[1, "asc"]], //默认的排序方式,第2列,升序排列  
     18                 "bFilter" : true, //是否启动过滤、搜索功能  
     19                         "aoColumns" : [{  
     20                             "mDataProp" : "USERID",  
     21                             "sDefaultContent" : "", //此列默认值为"",以防数据中没有此值,DataTables加载数据的时候报错  
     22                             "bVisible" : false //此列不显示  
     23                         }, {  
     24                             "mDataProp" : "USERNAME",  
     25                             "sTitle" : "用户名",  
     26                             "sDefaultContent" : "",  
     27                             "sClass" : "center"  
     28                         }, {  
     29                             "mDataProp" : "EMAIL",  
     30                             "sTitle" : "电子邮箱",  
     31                             "sDefaultContent" : "",  
     32                             "sClass" : "center"  
     33                         }, {  
     34                             "mDataProp" : "MOBILE",  
     35                             "sTitle" : "手机",  
     36                             "sDefaultContent" : "",  
     37                             "sClass" : "center"  
     38                         }, {  
     39                             "mDataProp" : "PHONE",  
     40                             "sTitle" : "座机",  
     41                             "sDefaultContent" : "",  
     42                             "sClass" : "center"  
     43                         }, {  
     44                             "mDataProp" : "NAME",  
     45                             "sTitle" : "姓名",  
     46                             "sDefaultContent" : "",  
     47                             "sClass" : "center"  
     48                         }, {  
     49                             "mDataProp" : "ISADMIN",  
     50                             "sTitle" : "用户权限",  
     51                             "sDefaultContent" : "",  
     52                             "sClass" : "center"  
     53                         }],  
     54                         "oLanguage": { //国际化配置  
     55                     "sProcessing" : "正在获取数据,请稍后...",    
     56                     "sLengthMenu" : "显示 _MENU_ 条",    
     57                     "sZeroRecords" : "没有您要搜索的内容",    
     58                     "sInfo" : "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",    
     59                     "sInfoEmpty" : "记录数为0",    
     60                     "sInfoFiltered" : "(全部记录数 _MAX_ 条)",    
     61                     "sInfoPostFix" : "",    
     62                     "sSearch" : "搜索",    
     63                     "sUrl" : "",    
     64                     "oPaginate": {    
     65                         "sFirst" : "第一页",    
     66                         "sPrevious" : "上一页",    
     67                         "sNext" : "下一页",    
     68                         "sLast" : "最后一页"    
     69                     }  
     70                 },  
     71                           
     72                         "fnRowCallback" : function(nRow, aData, iDisplayIndex) {  
     73                             /* 用来改写用户权限的 */  
     74                             if (aData.ISADMIN == '1')  
     75                                 $('td:eq(5)', nRow).html('管理员');  
     76                             if (aData.ISADMIN == '2')  
     77                                 $('td:eq(5)', nRow).html('资料下载');  
     78                             if (aData.ISADMIN == '3')  
     79                                 $('td:eq(5)', nRow).html('一般用户');  
     80                               
     81                             return nRow;  
     82                         },  
     83                           
     84                         "sAjaxSource" : "../use/userList.do?now=" + new Date().getTime(),  
     85                             //服务器端,数据回调处理  
     86                                 "fnServerData" : function(sSource, aDataSet, fnCallback) {  
     87                                     $.ajax({  
     88                                         "dataType" : 'json',  
     89                                         "type" : "POST",  
     90                                         "url" : sSource,  
     91                                         "data" : aDataSet,  
     92                                         "success" : fnCallback  
     93                                     });  
     94                                 }  
     95                     });  
     96                       
     97                     $("#docrevisontable tbody").click(function(event) { //当点击表格内某一条记录的时候,会将此记录的cId和cName写入到隐藏域中  
     98                         $(docrTable.fnSettings().aoData).each(function() {  
     99                             $(this.nTr).removeClass('row_selected');  
    100                         });  
    101                         $(event.target.parentNode).addClass('row_selected');  
    102                         var aData = docrTable.fnGetData(event.target.parentNode);  
    103                           
    104                         $("#userId").val(aData.USERID);  
    105                         $("#userN").val(aData.USERNAME);  
    106                     });  
    107                       
    108                     $('#docrevisontable_filter').html('<span>用户管理列表');  
    109                     $('#docrevisontable_filter').append('   <input type="button" class="addBtn" id="addBut" value="创建"/>');  
    110                     $('#docrevisontable_filter').append('   <input type="button" class="addBtn" id="addBut" value="修改"/>');  
    111                     $('#docrevisontable_filter').append('   <input type="button" class="addBtn" id="addBut" value="删除"/>');  
    112                     $('#docrevisontable_filter').append('</span>');  
    113             }  



  • 相关阅读:
    响应式布局
    CSS3过渡
    CSS3背景
    CSS渐变
    CSS3选择器
    CSS3
    自定义指令
    键盘修饰符
    过滤器
    v-if与v-show区别
  • 原文地址:https://www.cnblogs.com/yufann/p/Note2.html
Copyright © 2011-2022 走看看