DataTables یک کتاخانه با ویژگی های جستجو, مرتب سازی, صفحه بندی و دریافت خروجی DataTables از داده ها است. همچنین, یک رابط کاربری جدول مانند قوی برای کنترل روی تمام بخش های مدیریتی و پردازشی داده می دهد.
در آموزش های قبلی, نحوه استفاده از داده های کتابخانه DataTables برای نمایش ریسپانسیو DataTables دیدم. در این آموزش php , قصد داریم به شما نحوه export یا دریافت خروجی DataTables با PHP برای بکاپ داده ها را به شما نشان بدیم
امکان دریافت بکاپ از هر داده منبعی مثل دیتابیس یا فایل, یک قابلیت حیاطی برای هر اپلیکیشنی است. قبلا نحوه بکاپ گرفتن از دیتابیس را به همراه کد دیدیم.
این داده های بکاپ در چند جا بنابر نیاز قابل استفاده خواهد بود. برای مثال, اگر به طور اتفاقی داده های خود را به دلیل کرک یا هک از دست بدید, فایل پشتیبان را نیاز خواهد داشت
برای همین در این مثال, ما به کاربر (مدیریت) اجازه دریافت خروجی DataTables را در سه فرمت مختلف (اکسل, PDF, CSV) می دهیم. همچنین یک گزینه برای کپی داده های جدول به clipboard (حافظه موقت کپی) در اختیار کاربر قرار می دهیم.
نمایش داده های جدول DataTables
این کد صفحه نمایش DataTables به همراه قابلیت export را نشان می دهد.
جدول HTML ما به یک DataTable توسط نتایج دیتابیس تبدیل می شود. این جدول بطور یکتا دارای یک id برای استفاده به عنوان سلکتور هنگام مقداردهی اولیه DataTable است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<!DOCTYPE html> <head> <title> Export Data from Datatables using PHP and MySQL</title> <link href="style.css" rel="stylesheet" type="text/css" /> <script src="vendor/jquery/jquery-3.2.1.min.js" type="text/javascript"></script> <link rel="stylesheet" href="vendor/DataTables/jquery.datatables.min.css"> <script src="vendor/DataTables/jquery.dataTables.min.js" type="text/javascript"></script> <link rel="stylesheet" href="vendor/DataTables/buttons.datatables.min.css"> <script src="vendor/DataTables/dataTables.buttons.min.js" type="text/javascript"></script> <script src="vendor/DataTables/jszip.min.js" type="text/javascript"></script> <script src="vendor/DataTables/pdfmake.min.js" type="text/javascript"></script> <script src="vendor/DataTables/vfs_fonts.js" type="text/javascript"></script> <script src="vendor/DataTables/buttons.html5.min.js" type="text/javascript"></script> </head> <body> <div class="container"> <h2>Export Data from Datatables using PHP and MySQL</h2> <table name="employeeTable" id="employeeTable" class="display" cellspacing="0" width="100%"> <thead> <tr> <th>Name</th> <th>Age</th> <th>Salary</th> </tr> </thead> </table> </div> </body> </html> |
اسکریپت jQuery زیر کتابخانه DataTable را مقداردهی و استارت می زند. در اینجا, آپشن و دکمه های مورد نیاز دریافت خروجی DataTables مشخص شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<script> $(document).ready(function () { var table = $('#employeeTable').DataTable({ "paging": false, "processing": true, "serverSide": true, 'serverMethod': 'post', "ajax": "server.php", dom: 'Bfrtip', buttons: [ {extend: 'copy', attr: {id: 'allan'}}, 'csv', 'excel', 'pdf' ] }); }); </script> |
نکته: عملیات Export فقط رکورد های قابل نمایش در DataTables را بکاپ می گیرد. بنابراین, نیاز است تمام منو را انتخاب کنیم تا از کل داده ها خروجی گرفته شود.
اسکریپت دیتابیس
کد SQL زیر شامل دستور CREATE
و داده های مورد نیاز جدول tbl_employee
است. با ایمپورت این اسکریپت در دیتابیس, می توانید داده های را در DataTables لود کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
-- -- Table structure for table `tbl_employee` -- CREATE TABLE `tbl_employee` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) DEFAULT NULL, `salary` double DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Dumping data for table `tbl_employee` -- INSERT INTO `tbl_employee` (`id`, `name`, `age`, `salary`) VALUES (1, 'Jone Thomas', 25, 320800), (2, 'Tim Cook', 31, 170750), (3, 'Martha Welington', 32, 86000), (4, 'Kevin Julius', 33, 433060), (5, 'Kim Holinshade', 34, 162700), (6, 'Helen Margrate', 35, 372000), (7, 'Greata Aurther', 36, 137500), (104, 'Linda Karoline', 45, 200000), (103, 'Evita Benjamin', 23, 100000), (102, 'Mike Rosario', 45, 200000), (101, 'Jelinda Joel', 23, 100000); -- -- Indexes for table `tbl_employee` -- ALTER TABLE `tbl_employee` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_employee` -- ALTER TABLE `tbl_employee` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=105; COMMIT; |
کد PHP لود سمت سرور داده های DataTables
من از پردازش سمت سرور (server-side) برای بارگذاری سطرهای دیتابیس داخل DataTables استفاده کردم. در آموزش قبلی نحوه پردازش سمت سرور DataTables را برای لود داینامیک داده ها را دیدید.
فایل server.php
برای دریافت نتایج دیتابیس با دسترسی به کلاس SSP
در DataTables استفاده شده است.
در این فایل, متد simple
کلاس SSP
را برای ارسال تنظیمات دیتابیس, متد درخواست و پارامترهای دیگر فراخوانی کردیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php // DB table to use $table = 'tbl_employee'; // Table's primary key $primaryKey = 'id'; // indexes $columns = array( array( 'db' => 'name', 'dt' => 0 ), array( 'db' => 'age', 'dt' => 1 ), array( 'db' => 'salary', 'dt' => 2 ) ); // SQL server connection information $sql_details = array( 'user' => 'root', 'pass' => '', 'db' => 'phppot', 'host' => 'localhost' ); require( 'vendor/DataTables/server-side/scripts/ssp.class.php' ); echo json_encode( SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns ) ); |
خروجی مثال – دریافت خروجی DataTables با PHP و Mysql
اسکرین شات زیر به شما دکمه های دریافت خروحی در بالای DataTables را نشان می دهد. با کلیک روی دکمه های می توانید از جدول با یک فرمت موردنیاز خروجی بگیرید.
امیدوارم از آموزش دریافت خروجی DataTables با PHP و Mysql استفاده مفید را برده باشید.
برای دانلود سورس کد از باکس دانلود زیر استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
مشکلش اینه متن فارسی رو به صورت علامت سوال نشون میده؟چجوری باید رفعش کرد؟
سلام. حتما کویری و کدهای خواندن داده ها از دیتابیس utf8 نیست چرا که به وفور از این پلاگین در پروژه ها استفاده کردیم و مشکلی برای نمایش مقادیر فارسی ندارد.
موفق باشید.
دیتابیس رو براساس utf8 genral ci ساختم اما تو کد پی اچ پی میگن از این استفاده کنم mysqli_query($dbname,”SET NAMES UTF8″);
از این مورد استفاده میکنم ارور زیر رو دارم
DataTables warning: table id=employeeTable – Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1
این خطی که اضافه می کنید باعث ایجاد یک کویری جدید میشه که داده های برگشتی آن توسط پلاگین خوانده نخواهد شد و ارور بالا رو دریافت می کنید
به جای آن, میتونید از این هم $mysqli->set_charset(“utf8”); استفاده و تست کنید شاید نتیجه داد.
اگر اوکی نبود به جای mysqli از pdo بصورت زیر بهره ببرید :
$db = db = new PDO(“mysql:host=localhost;dbname=$dbname”,$username,$password,array(PDO::MYSQL_ATTR_INIT_COMMAND => “SET NAMES utf8”));
موفق باشید.