Ich wollte darauf hinweisen, dass bei der Verwendung von Daten vom Server über Ajax die Lösung sehr einfach ist, aber möglicherweise nicht sofort offensichtlich ist.
Bei der Rückgabe des Sortierreihenfolgen-Arrays senden Datatables (im $_POST
) ein 2-Element-Array, das entspricht :
$_POST['order'][0] =array('column'=>'SortColumnName', 'dir'=>'asc');
// 2nd element is either 'asc' or 'desc'
Daher können Sie das Datum in einem beliebigen Format anzeigen. Lassen Sie Ihren Server nur die Sortierkriterien zurückgeben, die nur auf dem basieren sortColumnName
.
In PHP (mit MySQL) verwende ich beispielsweise Folgendes:
if (isset($_POST['order'])) {
switch ($_POST['order'][0]['column']) {
case 0:// sort by Primary Key
$order = 'pkItemid';
break;
case 1:// Sort by reference number
$order = 'refNo';
break;
case 2://Date Started
$order = 'dOpen';
break;
default :
$order = 'pkItemid';
}
$orderdir = ($_POST['order'][0]['dir'] === 'desc') ? 'desc' : 'asc';
}
Beachten Sie, dass kein Cross-Script-Angriff möglich ist , da nichts von dem $_POST
an $order
oder übergeben $orderdir
wird.
Fügen Sie jetzt einfach eine MySQL-Abfrage hinzu:
$sql ="SELECT pkItemid, refNo, DATE_FORMAT(dOpen,'%b %e, %Y') AS dateStarted
FROM tblReference
ORDER BY $order $orderdir;";
Führen Sie die Abfrage aus und geben Sie nur den dateStarted
Wert an Datatables in json zurück.