DataTables logo DataTables

via Ad Packs

Server-side processing

Server-side processing in DataTables is exceptionally useful if you want display large data sources in a quick and easy manner, with controls such as filtering, sorting and paging. Since all of the heavy lifting is done on the server-side, there needs to be a script which will do this work on the server, and DataTables can ask for the data to display. This can be a little tricky to implement correctly initially, but presented here are a number of scripts which can be used and customised to your specific needs.

Each script uses the same data source (the schema and data are available here) to make each implementation basically the same in functionality as it is presented.

Implemented features

Each of the implementations differs in the feature set that it implements (the feature set is based upon the data that is sent to the server-side process through the passed parameters. Note that the PHP with MySQL version will always be kept up to data with support for the full feature server that DataTables provides (with the exception of regex filtering support due to performance of regex on large tables) - others are updated as the implementation authors develop each individual script.

Implementation Database Compatibility Pagination Filtering Sorting Regex filtering
ASP Classic SQL Server 2008 DataTables 1.6+ Yes Yes Yes No
ASP.NET SQL Server 2008 DataTables 1.6+ Yes Yes Yes No
ColdFusion (tags) MySQL DataTables 1.6+ Yes Yes
Global
Yes
Multi-column
No
ColdFusion (cfscript) MySQL DataTables 1.6+ Yes Yes
Global
Yes
Multi-column
No
JSP Abstracted DataTables 1.6+ Yes Yes
Global
Yes
Multi-column
No
Perl MySQL DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
Perl (CGI::Application) MySQL DataTables 1.6+ Yes Yes
Global + bSearchable_i check
Yes
Multi-column
No
PHP (CakePHP) MySQL DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP (CodeIgniter) Abstracted DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP Informix ODBC DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP MongoDB DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
Yes
PHP MSSQL ODBC DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP MySQL DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP 4 - 5.1 MySQL DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP - mysqli MySQL DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP PostgreSQL DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
PHP Oracle 10g DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No
Python (CGI) MySQL DataTables 1.6+ Yes Yes
Global
Yes
Multi-column
No
Ruby (CGI) MySQL DataTables 1.6+ Yes Yes
Global
Yes
Multi-column
No
Ruby on Rails MySQL DataTables 1.6+ Yes Yes
Global
Yes
Single column
No
Yesod Abstracted DataTables 1.6+ Yes Yes
Global + columns + bSearchable_i check
Yes
Multi-column + bSortable_i check
No

It should be noted that the scripts presented here are sample implementation, and will hopefully give you a good starting point when integrating DataTables with your server-side processing. You will need to make simple modifications to the scripts to access your own database, and potentially more extensive modifications if you want to significantly change the scripts operate. Hacking at these scripts is strong encouraged! Please see the server-side usage for details on the parameters passed to and from DataTables.

Credits and getting involved

Many of these scripts are kindly contributed to the DataTables community by those who have taken the time to implement them for their own projects - the copyright and credit is noted in the header of each individual script. Thank you all! If you have any improvements to an implementation, or an entirely new one in your language of choice which you can share with us, please get in touch!