当我不使用服务器端时,我如何命名数组中的列都没关系,排序仅适用于每一列。但是现在我正在使用服务器端数据表,它按数组中给定的名称排序。如果我将第一个命名为“ name
”(如下所示),那很好,因为它是数据库中的name列,但是如果我有一个与数据库值不同的列怎么办?
我有评论计数,数据库中没有这样的列,我在这里进行计数,因此无法对其进行排序。当我单击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);
}