Notice: Undefined index: sEcho
Notice: Undefined index: sEcho
gregshogun
Posts: 3Questions: 0Answers: 0
Hello all,
I test the server-side processing and I'm stuck on an issue.
The first time I load the table my data appear and everything is OK but the pagination and
the sort system don't work.
In my JSON the variable sEcho is equal to 0.
So this is a problem in my server-side code.
After debbuging, It's due to impossibility of finding all variables in GET.
All my $_GET variables is equal to null (!isset($_GET['sEcho'])).
In my client-side code I have this:
[code]
$(document).ready(function() {
$('#dataTable').dataTable(
{ "bProcessing": true,
"bServerSide": true,
"sAjaxSource": "testtableau/afficheTableau2.php"
});
});
[/code]
Any solutions?
I test the server-side processing and I'm stuck on an issue.
The first time I load the table my data appear and everything is OK but the pagination and
the sort system don't work.
In my JSON the variable sEcho is equal to 0.
So this is a problem in my server-side code.
After debbuging, It's due to impossibility of finding all variables in GET.
All my $_GET variables is equal to null (!isset($_GET['sEcho'])).
In my client-side code I have this:
[code]
$(document).ready(function() {
$('#dataTable').dataTable(
{ "bProcessing": true,
"bServerSide": true,
"sAjaxSource": "testtableau/afficheTableau2.php"
});
});
[/code]
Any solutions?
This discussion has been closed.
Replies
Allan
The problem is that the page is on intranet...
I have wrote the server-side script to use ADODB and MS SQL:
[code]
<?php
//error_reporting(E_ALL);
//ini_set('display_errors','On');
/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = "[N_IDHISTVALIDGED]";
$sTable = "[T_HISTVALIDGED]";
/*
* Columns
* If you don't want all of the columns displayed you need to hardcode $aColumns array with your elements.
* If not this will grab all the columns associated with $sTable
*/
$aColumns = array('[N_ID]','[C_CPTANA]','[C_LIBFOUR]','[C_DEVISE]');
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* If you just want to use the basic configuration for DataTables with PHP server-side, there is
* no need to edit below this line
*/
$conn = new COM("ADODB.Connection") or die("Impossible de démarrer une connexion ADO");
$conn->open("PROVIDER=SQLOLEDB;SERVER=xxxx.xxxx.xx.xx;UID=xxxxxxxx;PWD=xxxxxxxxxx;DATABASE=xxx");
/* Ordering */
$sOrder = "";
if (isset($_GET['iSortCol_0']))
{
$sOrder = "ORDER BY ";
for ($i = 0; $i < intval($_GET['iSortingCols']); $i++)
{
if ($_GET['bSortable_' . intval($_GET['iSortCol_' . $i])] == "true")
{
$sOrder .= $aColumns[intval($_GET['iSortCol_' . $i])] . "
" . addslashes($_GET['sSortDir_' . $i]) . ", ";
}
}
$sOrder = substr_replace($sOrder, "", -2);
if ($sOrder == "ORDER BY")
{
$sOrder = "";
}
}
/* Filtering */
$sWhere = "";
if (isset($_GET['sSearch']) && $_GET['sSearch'] != "")
{
$sWhere = "WHERE (";
for ($i = 0; $i < count($aColumns); $i++)
{
$sWhere .= $aColumns[$i] . " LIKE '%" . addslashes($_GET['sSearch']) . "%' OR ";
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ')';
}
/* Individual column filtering */
for ($i = 0; $i < count($aColumns); $i++)
{
if (isset($_GET['bSearchable_' . $i]) && $_GET['bSearchable_' . $i] == "true" && $_GET['sSearch_' . $i] != '')
{
if ($sWhere == "")
{
$sWhere = "WHERE ";
}
else
{
$sWhere .= " AND ";
}
$sWhere .= $aColumns[$i] . " LIKE '%" . addslashes($_GET['sSearch_' . $i]) . "%' ";
}
}
/* Paging */
$top = (isset($_GET['iDisplayStart'])) ? ((int) $_GET['iDisplayStart']) : 0;
$limit = (isset($_GET['iDisplayLength'])) ? ((int) $_GET['iDisplayLength'] ) : 10;
$sQuery = "SELECT TOP $limit " . implode(",", $aColumns) . "
FROM $sTable
$sWhere " . (($sWhere == "") ? " WHERE " : " AND ") . " $sIndexColumn NOT IN
(
SELECT $sIndexColumn FROM
(
SELECT TOP $top " . implode(",", $aColumns) . "
FROM $sTable
$sWhere
$sOrder
)
as [virtTable]
)
$sOrder";
$rResult = $conn->execute($sQuery);
$sQueryCnt = "SELECT * FROM $sTable $sWhere";
$rResultCnt = $conn->execute($sQueryCnt);
$cpt = 0;
while(!$rResultCnt->EOF)
{
$cpt++;
$rResultCnt->MoveNext();
}
$rResultCnt->MoveFirst();
$iFilteredTotal = $cpt;
$sQuery = " SELECT * FROM $sTable ";
$rResultTotal = $conn->execute($sQuery);
$cpt = 0;
while(!$rResultTotal->EOF)
{
$cpt++;
$rResultTotal->MoveNext();
}
$rResultTotal->MoveFirst();
$iTotal = $cpt;
$output = array(
"sEcho" => intval($_GET['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
while (!$rResult->EOF)
{
$aRow = array();
for($j=0;$jfields[$j]->value);
}
$row = array();
for ($i = 0; $i < count($aColumns); $i++)
{
if ($aColumns[$i] != ' ')
{
$v = $aRow[$aColumns[$i]];
$v = mb_check_encoding($v, 'UTF-8') ? $v : utf8_encode($v);
$row[] = $v;
}
}
If (!empty($row))
{
$output['aaData'][] = $row;
}
//$aRow = null;
$rResult->MoveNext();
}
echo json_encode($output);
?>
[/code]
Allan
But this call aven't header parameters.
When I try to do some actions (sort, pagin, etc.) there are no new calls in 'Network'.
My problem seems to be mysterious...
Anyway thank you for your help.
Allan