Когда я не использую серверную часть, не имеет значения, как я называю столбцы в массиве, сортировка работает только для каждого столбца.Однако теперь я использую Datatable на стороне сервера, и он сортирует по именам, указанным в массиве.Если я назову первое как «name
» (как показано ниже), это нормально, потому что это столбец имени из базы данных, но что если у меня есть столбец, который отличается от значений базы данных?
Iесть счетчик комментариев, и в моей базе данных нет такого столбца, я считаю его здесь, поэтому я не могу его отсортировать.Когда я нажимаю на сортировку столбцов для comment_count
,
, я получаю сообщение об ошибке (datatables.net/tn/1).
Есть ли способ сделать этона сервере?
Столбцы:
$columns = array(
0 => 'name', //same as db column name
1 => 'text', //same as db column name
2 => 'comment_count', //no such db column name
3 => 'date' //same as db column name
);
Это выполняет сортировку:
$sqlRec .= " ORDER BY ". $columns[$params['order'][0]['column']]."
".$params['order'][0]['dir']." LIMIT ".$params['start']."
,".$params['length']." ";
Сортировка по количеству комментариев, очевидно, не работает, потому что это не база данныхимя столбца.
//iterate on results row and create new index array of data
while( $x = sql_fetch($queryRecords) ) {
$column_1 = $x['name']; //first column, same as database column name
$column_2 = $x['text']; //second column, same as database column name
//Now comes the comment count trouble
$the_id = $x['id'];
$count = sql_query($conn, "SELECT COUNT(c.id) AS cid, c.topic_id
FROM comment AS c WHERE c.topic_id=".$the_id."");
$comments = sql_fetch($count);
$column_3 = '<a href="'.$protocol.'://'.$domain.'/topic/'.$x['url'].'#comments">
'.$comments['cid'].'</a>';
$column_4 = $x['date']; //fourth column, same as database column name
$data[] = array($column_1, $column_2, $column_3, $column_4);
}