annotate DataTables-1.9.4/examples/server_side/server_side.html @ 0:c73753f1606f draft

Uploaded
author saskia-hiltemann
date Mon, 06 Oct 2014 08:13:54 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
2 <html>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
3 <head>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
4 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
5 <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/media/images/favicon.ico" />
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
6
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
7 <title>DataTables example</title>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
8 <style type="text/css" title="currentStyle">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
9 @import "../../media/css/demo_page.css";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
10 @import "../../media/css/demo_table.css";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
11 </style>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
12 <script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
13 <script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
14 <script type="text/javascript" charset="utf-8">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
15 $(document).ready(function() {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
16 $('#example').dataTable( {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
17 "bProcessing": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
18 "bServerSide": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
19 "sAjaxSource": "scripts/server_processing.php"
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
20 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
21 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
22 </script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
23 </head>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
24 <body id="dt_example">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
25 <div id="container">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
26 <div class="full_width big">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
27 DataTables server-side processing example
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
28 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
29
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
30 <h1>Preamble</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
31 <p>There are many ways to get your data into DataTables, and if you are working with seriously large databases, you might want to consider using the server-side options that DataTables provides. Basically all of the paging, filtering, sorting etc that DataTables does can be handed off to a server (or any other data source - Google Gears or Adobe Air for example!) and DataTables is just an events and display module.</p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
32 <p>The example here shows a very simple display of the CSS data (used in all my other examples), but in this instance coming from the server on each draw. Filtering, multi-column sorting etc all work as you would expect.</p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
33
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
34 <h1>Live example</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
35 <div id="dynamic">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
36 <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
37 <thead>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
38 <tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
39 <th width="20%">Rendering engine</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
40 <th width="25%">Browser</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
41 <th width="25%">Platform(s)</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
42 <th width="15%">Engine version</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
43 <th width="15%">CSS grade</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
44 </tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
45 </thead>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
46 <tbody>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
47 <tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
48 <td colspan="5" class="dataTables_empty">Loading data from server</td>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
49 </tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
50 </tbody>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
51 <tfoot>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
52 <tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
53 <th>Rendering engine</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
54 <th>Browser</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
55 <th>Platform(s)</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
56 <th>Engine version</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
57 <th>CSS grade</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
58 </tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
59 </tfoot>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
60 </table>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
61 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
62 <div class="spacer"></div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
63
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
64
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
65 <h1>Initialisation code</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
66 <pre class="brush: js;">$(document).ready(function() {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
67 $('#example').dataTable( {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
68 "bProcessing": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
69 "bServerSide": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
70 "sAjaxSource": "scripts/server_processing.php"
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
71 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
72 } );</pre>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
73 <style type="text/css">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
74 @import "../examples_support/syntax/css/shCore.css";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
75 </style>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
76 <script type="text/javascript" language="javascript" src="../examples_support/syntax/js/shCore.js"></script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
77
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
78 <h1>Server response</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
79 <p>The code below shows the latest JSON data that has been returned from the server in response to the Ajax request made by DataTables. This will update as further requests are made.</p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
80 <pre id="latest_xhr" class="brush: js;"></pre>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
81
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
82 <h1>Server side (PHP) code</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
83 <pre>&lt;?php
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
84 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
85 * Easy set variables
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
86 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
87
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
88 /* Array of database columns which should be read and sent back to DataTables. Use a space where
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
89 * you want to insert a non-database field (for example a counter or static image)
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
90 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
91 $aColumns = array( 'engine', 'browser', 'platform', 'version', 'grade' );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
92
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
93 /* Indexed column (used for fast and accurate table cardinality) */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
94 $sIndexColumn = "id";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
95
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
96 /* DB table to use */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
97 $sTable = "ajax";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
98
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
99 /* Database connection information */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
100 $gaSql['user'] = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
101 $gaSql['password'] = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
102 $gaSql['db'] = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
103 $gaSql['server'] = "localhost";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
104
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
105 /* REMOVE THIS LINE (it just includes my SQL connection user/pass) */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
106 include( $_SERVER['DOCUMENT_ROOT']."/datatables/mysql.php" );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
107
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
108
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
109 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
110 * If you just want to use the basic configuration for DataTables with PHP server-side, there is
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
111 * no need to edit below this line
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
112 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
113
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
114 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
115 * Local functions
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
116 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
117 function fatal_error ( $sErrorMessage = '' )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
118 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
119 header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
120 die( $sErrorMessage );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
121 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
122
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
123
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
124 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
125 * MySQL connection
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
126 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
127 if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
128 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
129 fatal_error( 'Could not open connection to server' );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
130 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
131
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
132 if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
133 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
134 fatal_error( 'Could not select database ' );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
135 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
136
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
137
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
138 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
139 * Paging
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
140 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
141 $sLimit = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
142 if ( isset( $_GET['iDisplayStart'] ) &amp;&amp; $_GET['iDisplayLength'] != '-1' )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
143 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
144 $sLimit = "LIMIT ".intval( $_GET['iDisplayStart'] ).", ".
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
145 intval( $_GET['iDisplayLength'] );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
146 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
147
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
148
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
149 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
150 * Ordering
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
151 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
152 $sOrder = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
153 if ( isset( $_GET['iSortCol_0'] ) )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
154 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
155 $sOrder = "ORDER BY ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
156 for ( $i=0 ; $i&lt;intval( $_GET['iSortingCols'] ) ; $i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
157 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
158 if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
159 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
160 $sOrder .= "`".$aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
161 ($_GET['sSortDir_'.$i]==='asc' ? 'asc' : 'desc') .", ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
162 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
163 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
164
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
165 $sOrder = substr_replace( $sOrder, "", -2 );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
166 if ( $sOrder == "ORDER BY" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
167 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
168 $sOrder = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
169 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
170 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
171
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
172
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
173 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
174 * Filtering
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
175 * NOTE this does not match the built-in DataTables filtering which does it
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
176 * word by word on any field. It's possible to do here, but concerned about efficiency
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
177 * on very large tables, and MySQL's regex functionality is very limited
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
178 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
179 $sWhere = "";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
180 if ( isset($_GET['sSearch']) &amp;&amp; $_GET['sSearch'] != "" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
181 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
182 $sWhere = "WHERE (";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
183 for ( $i=0 ; $i&lt;count($aColumns) ; $i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
184 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
185 $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
186 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
187 $sWhere = substr_replace( $sWhere, "", -3 );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
188 $sWhere .= ')';
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
189 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
190
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
191 /* Individual column filtering */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
192 for ( $i=0 ; $i&lt;count($aColumns) ; $i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
193 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
194 if ( isset($_GET['bSearchable_'.$i]) &amp;&amp; $_GET['bSearchable_'.$i] == "true" &amp;&amp; $_GET['sSearch_'.$i] != '' )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
195 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
196 if ( $sWhere == "" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
197 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
198 $sWhere = "WHERE ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
199 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
200 else
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
201 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
202 $sWhere .= " AND ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
203 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
204 $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
205 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
206 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
207
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
208
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
209 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
210 * SQL queries
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
211 * Get data to display
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
212 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
213 $sQuery = "
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
214 SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
215 FROM $sTable
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
216 $sWhere
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
217 $sOrder
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
218 $sLimit
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
219 ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
220 $rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
221
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
222 /* Data set length after filtering */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
223 $sQuery = "
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
224 SELECT FOUND_ROWS()
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
225 ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
226 $rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
227 $aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
228 $iFilteredTotal = $aResultFilterTotal[0];
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
229
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
230 /* Total data set length */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
231 $sQuery = "
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
232 SELECT COUNT(`".$sIndexColumn."`)
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
233 FROM $sTable
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
234 ";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
235 $rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
236 $aResultTotal = mysql_fetch_array($rResultTotal);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
237 $iTotal = $aResultTotal[0];
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
238
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
239
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
240 /*
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
241 * Output
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
242 */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
243 $output = array(
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
244 "sEcho" =&gt; intval($_GET['sEcho']),
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
245 "iTotalRecords" =&gt; $iTotal,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
246 "iTotalDisplayRecords" =&gt; $iFilteredTotal,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
247 "aaData" =&gt; array()
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
248 );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
249
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
250 while ( $aRow = mysql_fetch_array( $rResult ) )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
251 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
252 $row = array();
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
253 for ( $i=0 ; $i&lt;count($aColumns) ; $i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
254 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
255 if ( $aColumns[$i] == "version" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
256 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
257 /* Special output formatting for 'version' column */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
258 $row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
259 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
260 else if ( $aColumns[$i] != ' ' )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
261 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
262 /* General output */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
263 $row[] = $aRow[ $aColumns[$i] ];
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
264 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
265 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
266 $output['aaData'][] = $row;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
267 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
268
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
269 echo json_encode( $output );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
270 ?&gt;</pre>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
271
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
272
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
273 <h1>Other examples</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
274 <div class="demo_links">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
275 <h2>Basic initialisation</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
276 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
277 <li><a href="../basic_init/zero_config.html">Zero configuration</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
278 <li><a href="../basic_init/filter_only.html">Feature enablement</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
279 <li><a href="../basic_init/table_sorting.html">Sorting data</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
280 <li><a href="../basic_init/multi_col_sort.html">Multi-column sorting</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
281 <li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
282 <li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
283 <li><a href="../basic_init/complex_header.html">Complex headers - grouping with colspan</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
284 <li><a href="../basic_init/dom.html">DOM positioning</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
285 <li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
286 <li><a href="../basic_init/state_save.html">State saving</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
287 <li><a href="../basic_init/alt_pagination.html">Alternative pagination styles</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
288 <li>Scrolling: <br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
289 <a href="../basic_init/scroll_x.html">Horizontal</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
290 <a href="../basic_init/scroll_y.html">Vertical</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
291 <a href="../basic_init/scroll_xy.html">Both</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
292 <a href="../basic_init/scroll_y_theme.html">Themed</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
293 <a href="../basic_init/scroll_y_infinite.html">Infinite</a>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
294 </li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
295 <li><a href="../basic_init/language.html">Change language information (internationalisation)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
296 <li><a href="../basic_init/themes.html">ThemeRoller themes (Smoothness)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
297 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
298
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
299 <h2>Advanced initialisation</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
300 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
301 <li>Events: <br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
302 <a href="../advanced_init/events_live.html">Live events</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
303 <a href="../advanced_init/events_pre_init.html">Pre-init</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
304 <a href="../advanced_init/events_post_init.html">Post-init</a>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
305 </li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
306 <li><a href="../advanced_init/column_render.html">Column rendering</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
307 <li><a href="../advanced_init/html_sort.html">Sorting without HTML tags</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
308 <li><a href="../advanced_init/dom_multiple_elements.html">Multiple table controls (sDom)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
309 <li><a href="../advanced_init/length_menu.html">Defining length menu options</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
310 <li><a href="../advanced_init/complex_header.html">Complex headers and hidden columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
311 <li><a href="../advanced_init/dom_toolbar.html">Custom toolbar (element) around table</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
312 <li><a href="../advanced_init/highlight.html">Row highlighting with CSS</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
313 <li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
314 <li><a href="../advanced_init/row_callback.html">Row callback</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
315 <li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
316 <li><a href="../advanced_init/sorting_control.html">Control sorting direction of columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
317 <li><a href="../advanced_init/language_file.html">Change language information from a file (internationalisation)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
318 <li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
319 <li><a href="../advanced_init/localstorage.html">State saving with localStorage</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
320 <li><a href="../advanced_init/dt_events.html">Custom events</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
321 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
322
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
323 <h2>API</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
324 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
325 <li><a href="../api/add_row.html">Dynamically add a new row</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
326 <li><a href="../api/multi_filter.html">Individual column filtering (using "input" elements)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
327 <li><a href="../api/multi_filter_select.html">Individual column filtering (using "select" elements)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
328 <li><a href="../api/highlight.html">Highlight rows and columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
329 <li><a href="../api/row_details.html">Show and hide details about a particular record</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
330 <li><a href="../api/select_row.html">User selectable rows (multiple rows)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
331 <li><a href="../api/select_single_row.html">User selectable rows (single row) and delete rows</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
332 <li><a href="../api/editable.html">Editable rows (with jEditable)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
333 <li><a href="../api/form.html">Submit form with elements in table</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
334 <li><a href="../api/counter_column.html">Index column (static number column)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
335 <li><a href="../api/show_hide.html">Show and hide columns dynamically</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
336 <li><a href="../api/api_in_init.html">API function use in initialisation object (callback)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
337 <li><a href="../api/tabs_and_scrolling.html">DataTables scrolling and tabs</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
338 <li><a href="../api/regex.html">Regular expression filtering</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
339 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
340 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
341
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
342 <div class="demo_links">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
343 <h2>Data sources</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
344 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
345 <li><a href="../data_sources/dom.html">DOM</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
346 <li><a href="../data_sources/js_array.html">Javascript array</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
347 <li><a href="../data_sources/ajax.html">Ajax source</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
348 <li><a href="../data_sources/server_side.html">Server side processing</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
349 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
350
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
351 <h2>Server-side processing</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
352 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
353 <li><a href="../server_side/server_side.html">Obtain server-side data</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
354 <li><a href="../server_side/custom_vars.html">Add extra HTTP variables</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
355 <li><a href="../server_side/post.html">Use HTTP POST</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
356 <li><a href="../server_side/ids.html">Automatic addition of IDs and classes to rows</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
357 <li><a href="../server_side/object_data.html">Reading table data from objects</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
358 <li><a href="../server_side/row_details.html">Show and hide details about a particular record</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
359 <li><a href="../server_side/select_rows.html">User selectable rows (multiple rows)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
360 <li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
361 <li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
362 <li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
363 <li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
364 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
365
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
366 <h2>Ajax data source</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
367 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
368 <li><a href="../ajax/ajax.html">Ajax sourced data (array of arrays)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
369 <li><a href="../ajax/objects.html">Ajax sourced data (array of objects)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
370 <li><a href="../ajax/defer_render.html">Deferred DOM creation for extra speed</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
371 <li><a href="../ajax/null_data_source.html">Empty data source columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
372 <li><a href="../ajax/custom_data_property.html">Use a data source other than aaData (the default)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
373 <li><a href="../ajax/objects_subarrays.html">Read column data from sub-arrays</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
374 <li><a href="../ajax/deep.html">Read column data from deeply nested properties</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
375 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
376
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
377 <h2>Plug-ins</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
378 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
379 <li><a href="../plug-ins/plugin_api.html">Add custom API functions</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
380 <li><a href="../plug-ins/sorting_plugin.html">Sorting and automatic type detection</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
381 <li><a href="../plug-ins/sorting_sType.html">Sorting without automatic type detection</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
382 <li><a href="../plug-ins/paging_plugin.html">Custom pagination controls</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
383 <li><a href="../plug-ins/range_filtering.html">Range filtering / custom filtering</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
384 <li><a href="../plug-ins/dom_sort.html">Live DOM sorting</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
385 <li><a href="../plug-ins/html_sort.html">Automatic HTML type detection</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
386 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
387 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
388
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
389
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
390 <div id="footer" class="clear" style="text-align:center;">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
391 <p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
392 Please refer to the <a href="http://www.datatables.net/usage">DataTables documentation</a> for full information about its API properties and methods.<br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
393 Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of DataTables.
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
394 </p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
395
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
396 <span style="font-size:10px;">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
397 DataTables designed and created by <a href="http://www.sprymedia.co.uk">Allan Jardine</a> &copy; 2007-2011<br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
398 DataTables is dual licensed under the <a href="http://www.datatables.net/license_gpl2">GPL v2 license</a> or a <a href="http://www.datatables.net/license_bsd">BSD (3-point) license</a>.
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
399 </span>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
400 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
401 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
402 </body>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
403 </html>