How to configure Editor to work with Server-Side processing?

How to configure Editor to work with Server-Side processing?

rlogrlog Posts: 7Questions: 0Answers: 0
edited January 2013 in Editor
Hi Allan, and thank you for your great job!
I need to set up an editor enabled datatables with support for server side processing. The provided examples do not cover this configuration since the datasource specified are based on the datatables Php Libraries for both the ajaxUrl and the sAjaxSource parameters.
This is what I have tried:
1) set up a php/mysql server processed datasource and it works correctly when editor is not enabled;
2) set up a Datatables PHP Libraries based datasource and it works as expected when the editor is enabled;
3) set up an editor enabled datasource using different datasources for ajaxUrl and sAjaxSource: in this case datatables does not load any data and returns the error "JSON data from server could not be parsed".

Am I missing some part of the documentation?

Thank you


This is the code:

[code]

var editor; // use a global for the submit and return data rendering in the examples

$(document).ready(function() {
editor = new $.fn.dataTable.Editor( {
"ajaxUrl": "php/browsers.php",
"domTable": "#example",
"fields": [ {
"label": "Browser:",
"name": "browser",
"className": "allan"
}, {
"label": "Rendering engine:",
"name": "engine"
}, {
"label": "Platform:",
"name": "platform"
}, {
"label": "Version:",
"name": "version"
}, {
"label": "CSS grade:",
"name": "grade"
}
]
} );

dt = $('#example').dataTable( {
"sDom": "Tfrtip",
"sAjaxSource": "php/server_processing.php",
"bServerSide": true,
"sServerMethod": 'POST',
"aoColumns": [
{ "mData": "browser" },
{ "mData": "engine" },
{ "mData": "platform" },
{ "mData": "version", "sClass": "center" },
{ "mData": "grade", "sClass": "center" }
],
"oTableTools": {
"sRowSelect": "multi",
"aButtons": [
{ "sExtends": "editor_create", "editor": editor },
{ "sExtends": "editor_edit", "editor": editor },
{ "sExtends": "editor_remove", "editor": editor }
]
}
} );
} );

[/code]


SERVER_PROCESSING.PHP
[code]
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Easy set variables
*/

/* Array of database columns which should be read and sent back to DataTables. Use a space where
* you want to insert a non-database field (for example a counter or static image)
*/
$aColumns = array( 'engine', 'browser', 'platform', 'version', 'grade' );

/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = "id";

/* DB table to use */
$sTable = "ajax";

/* Database connection information */
$gaSql['user'] = "XXXXXXXX";
$gaSql['password'] = "XXXXXXXX";
$gaSql['db'] = "datatables";
$gaSql['server'] = "localhost";

/* REMOVE THIS LINE (it just includes my SQL connection user/pass) */
//include( $_SERVER['DOCUMENT_ROOT']."/datatables/mysql.php" );


/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* If you just want to use the basic configuration for DataTables with PHP server-side, there is
* no need to edit below this line
*/

/*
* Local functions
*/
function fatal_error ( $sErrorMessage = '' )
{
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
die( $sErrorMessage );
}


/*
* MySQL connection
*/
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
{
fatal_error( 'Could not open connection to server' );
}

if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
{
fatal_error( 'Could not select database ' );
}

/*
* Paging
*/
$sLimit = "";
if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )
{
$sLimit = "LIMIT ".intval( $_GET['iDisplayStart'] ).", ".
intval( $_GET['iDisplayLength'] );
}


/*
* Ordering
*/
$sOrder = "";
if ( isset( $_GET['iSortCol_0'] ) )
{
$sOrder = "ORDER BY ";
for ( $i=0 ; $i $iFilteredTotal,
"aaData" => array()
);

while ( $aRow = mysql_fetch_array( $rResult ) )
{
$row = array();
for ( $i=0 ; $i
[/code]

Replies

  • allanallan Posts: 61,716Questions: 1Answers: 10,108 Site admin
    All you need to do is add `bProcessing: true` to your DataTables initialisation :-). The Editor 'get' method will realise that it should be dealing with server-side processing and enact that - server-side processing is fully built in to the Editor PHP libraries. You don't need a separate PHP script.

    There is an example of that here: http://editor.datatables.net/release/DataTables/extras/Editor/examples/server-side-processing.html

    Allan
  • rlogrlog Posts: 7Questions: 0Answers: 0
    Is that really so easy? I did not expect that! GREAT!!!

    Thank you so much, Allan!
This discussion has been closed.