Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

RobinDev/DataTablesPHP

Repository files navigation

Build Status Total Downloads

##Table of contents

##Description

DataTablesPHP generates easily your DataTable Html or Javascript... with Server-Side or not. It enhances the filters's utilisation adding individual column filtering (with or without server-side).

Compatible with the last version of DataTables (1.10.x).

###Features

  • Generate html table (complex header)
  • Generate the Javascript related (Data can be set in the initial parameters or load via Ajax or Server-Sive)
  • Custom search column by column and complex search to optimize SQL queries
  • Analyze Server-Side Request and Generate SQL queries
    • Can handle complex query (join)
    • Can handle Optimize Query to search value (not only Like %, you can parameter to use =,<,>,<=,>=,BETWEEN...)
  • Using all this features in the same time permits to easily handle a dataTable with PHP

Server-side part inspired from Allan Jardine's Class SSP. Improve in order to don't trust user input, add the join possibilities and more...

##Installation

You can clone this git, download the class or use Composer :

composer require ropendev/datatablesphp

##Example

See in the examples folder.

##Documentation

DataTable::instance('id')
 ->setJsInitParam($key, $value) // http://datatables.net/reference/option/
 ->setJsInitParams($params) // To set all params in one time
 ->setDom($dom) // Alias for setJsInitParameter('dom', $dom)
 ->setColumn($params, $show = true) // Add a column and there options to the table:
 // - Initialization Javascript Options (see the doc : DataTables.net > Refererences > Column)
 // - PHP Options (parent for complex header, sFilter, sql_table, sqlFilter... see l.169)
 // if($show) will be printed in the table else will only be load via ajax
 ->setColumns($columns) // Add columns
 ->setServerSide($ajax) // http://datatables.net/reference/option/ajax
 ->setAjax($ajax) // Alias for setJsInitParameter('ajax', $ajax)
 ->setFilters($ajax) // Set permanent filters for sql queries (where)
 ->setData($data) // Permit to set the data in the DataTables Javascript Initialization.
 ->setHeader($bool) // To generate thead when you will call getHtml
 ->setFooter($bool) // To generate tfoot with th empty when you will call getHtml.
 // ... automatically called if you have set individual column filters
DataTable::instance('id')->getJavascript(); // Return javascript string. It is not embeding JS Files from DataTables.js... only it activation
 // and individual column filtering stuff
DataTable::instance('id')->getHtml([array('class'=>'my_table_class', 'data-nuclear'=>'bomb')]); // Return html table in a string
/*** Server-Side Functions ***/
# You can't use server side options if you didn't set Columns
DataTable::instance('id')
 ->setFrom($table) // Name of the table to query
 ->setJoin('table2', array('table'=>'column', 'table2'=>'column2') [, $join = 'LEFT JOIN', $duplicate = false]) // Table to join
 ->setPdoLink($pdoLink) // Add PHP PDO class link
 ->setCounterActive(false) // Disabled counters (permits to gain in performanche, think to change your infoFiltered)
DataTable::instance('id')->exec($_REQUEST[, $csv = false]); // Output the json results
 //or export to csv format (use setInitFilter before if you use Individual column Filters)
DataTable::instance('id')->sendFatal($error); // Output an error

A php array for a column can contain :

  • Properties for Initialization Javascript (see self::$columnParams or http://datatables.net/reference/option/)
  • parent (=>$title) : To have a complex header with a colspan... Set the same $title to put multiple column under the same th
  • sFilter (=>array) : for the column filtering options (see self::$columFilteringParams)
  • SQL params (sql_name and sql_table) : if there is different from data or default table set with setFrom
  • alias : sql alias (not required)
  • formatter (=>function($columnValue,$rowValues,$columnParams)) : if you want to print your data with a special format, set a function In a Server-Side Request, if you don't want select a SQL column, just don't set sql_name or data properties (but set a formatter function to print something !).

##License

MIT (see the LICENSE file for details)

##Todo It will come soon :

  • AutoGenerate select's options if there is data (l.469)
  • Example with export function

About

PHP DataTablesPHP wrapper class for DataTables.js (Html, Javascript & Server Side). http://www.robin-d.fr/

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /