繁体   English   中英

使用 PHP 和 MSSQL 进行 Jquery Datatables 服务器端处理

[英]Jquery Datatables server-side processing with PHP with MSSQL

我正在按照本教程在 PHP、MSSQL 和 AJAX 中应用数据表服务器端处理。

我根据我的要求调整了提到的代码。 这是我的索引页

<!DOCTYPE html>
<html>
    <title>Datatable</title>
    <head>
        <link rel="stylesheet" type="text/css" href="css/jquery.dataTables.css">
        <script type="text/javascript" language="javascript" src="js/jquery.js"></script>
        <script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>
        <script type="text/javascript" language="javascript" >
            $(document).ready(function() {
                var dataTable = $('#grid').DataTable( {
                    "processing": true,
                    "serverSide": true,
                    "ajax":{
                        url :"grid-data.php",
                        type: "post", 
                        error: function(){
                            $(".grid-error").html("");
                            $("#grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>');
                            $("#grid_processing").css("display","none");

                        }
                    }
                } );
            } );
        </script>
        <style>
            div.container {
                margin: 0 auto;
                max-width:760px;
            }
            div.header {
                margin: 100px auto;
                line-height:30px;
                max-width:760px;
            }
            body {
                background: #f7f7f7;
                color: #333;
                font: 90%/1.45em "Helvetica Neue",HelveticaNeue,Verdana,Arial,Helvetica,sans-serif;
            }
        </style>
    </head>
    <body>
        <div class="header"><h1>DataTable demo</h1></div>
        <div class="container">
            <table id="grid"  cellpadding="0" cellspacing="0" border="0" class="display" width="100%">
                    <thead>
                        <tr>
                            <th>Country</th>
                            <th>Territory</th>
                            <th>Market</th>
                        </tr>
                    </thead>
            </table>
        </div>
    </body>
</html>

这是 grid-data.php

<?php

$servername = "******";
$username = "******";
$password = "******";
$dbname = "mydatabase";

$dbDB = new PDO("odbc:Driver=ODBC Driver 13 for SQL Server;Server=******,1456;Database=mydatabase;Port=1456", $username, $password);
$requestData= $_REQUEST;

$columns = array( 
    0 =>'Country', 
    1 => 'Territory',
    2=> 'Market' );

$sql = "SELECT Country, Territory, Market ";
$sql.=" FROM mydatabase.mytable";

$nRows = $dbDB->query("SELECT count(*) from mydatabase.mytable")->fetchColumn(); 
$totalData = $nRows;
$totalFiltered = $totalData;

$sql = "SELECT Country, Territory, Market ";
$sql.=" FROM mydatabase.mytable WHERE 1=1";
if( !empty($requestData['search']['value']) ) {
    $sql.=" AND ( Country LIKE '".$requestData['search']['value']."%' ";    
    $sql.=" OR Territory LIKE '".$requestData['search']['value']."%' ";
    $sql.=" OR Market LIKE '".$requestData['search']['value']."%' )";
}

$nRowsSearch = $dbDB->query($sql)->fetchColumn(); 
$totalFiltered = $nRowsSearch;

$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]."   ".$requestData['order'][0]['dir']."  LIMIT ".$requestData['start']." ,".$requestData['length']."   ";

$data = array();
$query = 'SELECT Country, Territory, Market FROM mydatabase.mytable WHERE 1=1';

foreach ($dbDB->query($query) as $row) {
    $nestedData=array(); 
    $nestedData[] = $row["Country"];
    $nestedData[] = $row["Territory"];
    $nestedData[] = $row["Market"];

    $data[] = $nestedData;

} 

$json_data = array(
            "draw"            => intval( $requestData['draw'] ),   
            "recordsTotal"    => intval( $totalData ),  
            "recordsFiltered" => intval( $totalFiltered ), 
            "data"            => $data  
            );

echo json_encode($json_data); 

?>

数据已正确加载到我的表中,但所有功能(如搜索、更改长度和排​​序)都不起作用。

你能告诉我我的 grid-data.php 中缺少什么吗? 非常感谢您的建议。

如果您希望实现服务器端分页和更改长度,您可能应该发送您所在的页面、页面长度等内容。

确保您将页码、页长传递给您的 API,然后在服务器端编写一些逻辑以仅选择页长记录数并基于页码。

我希望这就是您可能正在寻找的内容

如果您使用的是 PHP,则可以使用下载 DataTables 库时位于/examples/server_side/scripts文件夹中的ssp.class.php

/examples/server_side/scripts文件夹中还有一个示例脚本server_processing.php ,它展示了如何使用 SSP 类。

if(!empty($search)){
        $sql ="SELECT * FROM t_penalty_list WHERE";
        $sql.=" l_code LIKE '%{$search}%'";
        $sql.=" OR cus_name LIKE '%{$search}%'";
        $sql.=" OR cus_phone LIKE '%{$search}%'";
        $sql.=" OR penalty_date LIKE '%{$search}%'";
    }else{
        $sql ="SELECT * FROM t_penalty_list WHERE 1=1";
        if(!empty($is_status)){
            if($is_status == 1){
                $sql.=" AND amount_dept <= 0";
            }elseif($is_status ==2){
                $sql.=" AND amount_dept > 0";
            }
            $totalData = count($this->_penalty->selectRaw($sql));
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM