Как экспортировать JQuery Datatable с диапазоном данных в PDF, Excel, CSV и Copy - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть форма для фильтрации, которая работает нормально.В моей форме я могу только фильтровать записи и генерировать отфильтрованные результаты в Excel (только отфильтрованные записи). Здесь я должен добавить фильтр диапазона дат, и если пользователь выбирает только from_date и to_date, то мне нужно сгенерировать все записи между этимидаты.Если он / она хочет создать столбец или другой столбец, тогда я смогу создавать отчеты, настроенные таким же образом.Я могу только фильтровать записи с этим условием, но я не могу написать логику для создания SQL-запроса для генерации отчета.Спасибо!

Concection:

<?php
/* Database connection start */
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "db_name";

$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

?>

Отзывчивый код:

<?php
    //include connection file 
    include_once("connection.php");

    // initilize all variable
    $params = $columns = $totalRecords = $data = array();

    $params = $_REQUEST;

    //define index of column
    $columns = array( 
        0 =>'pid',
        1 =>'product_name', 
        2 => 'product_price',
        3 => 'added_date'
    );

    $where = $sqlTot = $sqlRec = "";

    // getting total number records without any search
    $sql = "SELECT pid,product_name,product_price,added_datek FROM `products` ";
    $sqlTot .= $sql;
    $sqlRec .= $sql;


    $sqlRec .=  " ORDER BY added_date";

    $queryTot = mysqli_query($conn, $sqlTot) or die("database error:". mysqli_error($conn));


    $totalRecords = mysqli_num_rows($queryTot);

    $queryRecords = mysqli_query($conn, $sqlRec) or die("error to fetch employees data");

    //iterate on results row and create new index array of data
    while( $row = mysqli_fetch_row($queryRecords) ) { 
        $data[] = $row;
    }   

    $json_data = array(
            "draw"            => 1,   
            "recordsTotal"    => intval( $totalRecords ),  
            "recordsFiltered" => intval($totalRecords),
            "data"            => $data   // total data array
            );

    echo json_encode($json_data);  // send data as json format
?>

У меня есть форма для фильтрации, которая работает нормально.В моей форме я могу только фильтровать записи и генерировать отфильтрованные результаты в Excel (только отфильтрованные записи). Здесь я должен добавить фильтр диапазона дат, и если пользователь выбирает только from_date и to_date, то мне нужно сгенерировать все записи между этимидаты.Если он / она хочет создать столбец или другой столбец, тогда я смогу создавать отчеты, настроенные таким же образом.Я могу только фильтровать записи с этим условием, но я не могу написать логику для создания SQL-запроса для генерации отчета.Спасибо!

Код содержимого HTML:

    <html>
    <head>

    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/r/dt/jq-2.1.4,jszip-2.5.0,pdfmake-0.1.18,dt-1.10.9,af-2.0.0,b-1.0.3,b-colvis-1.0.3,b-html5-1.0.3,b-print-1.0.3,se-1.0.1/datatables.min.css"/>

    <script type="text/javascript" src="https://cdn.datatables.net/r/dt/jq-2.1.4,jszip-2.5.0,pdfmake-0.1.18,dt-1.10.9,af-2.0.0,b-1.0.3,b-colvis-1.0.3,b-html5-1.0.3,b-print-1.0.3,se-1.0.1/datatables.min.js"></script>


        <div class="container" style="padding:20px;20px;">
          <div class="">
            <h1>Data Table with Export features Using PHP server-side</h1>
            <div class="">
            <table id="employee_grid" class="display" width="100%" cellspacing="0">
            <thead>
                <tr>
                    <th>PID</th>
                    <th>Product Name</th>
                    <th>Price</th>
                    <th>Purchase Date</th>
                </tr>
            </thead>

            <tfoot>
                <tr>
                   <th>PID</th>
                    <th>Product Name</th>
                    <th>Price</th>
                    <th>Purchase Date</th>

                </tr>
            </tfoot>
        </table>
        </div>
          </div>

        </div>

    <script type="text/javascript">
    $( document ).ready(function() {
    $('#employee_grid').DataTable({
             "processing": true,
             "sAjaxSource":"response.php",
             "dom": 'lBfrtip',
             "buttons": [
                {
                    extend: 'collection',
                    text: 'Export',
                    buttons: [
                        'copy',
                        'excel',
                        'csv',
                        'pdf',
                        'print'
                    ]
                }
            ]
            });
    });
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...