服务器端数据表列排序(当数据不是来自数据库时)

时间:2019-06-10 05:24:18

标签: ajax datatable

当我不使用服务器端时,我如何命名数组中的列都没关系,排序仅适用于每一列。但是现在我正在使用服务器端数据表,它按数组中给定的名称排序。如果我将第一个命名为“ 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);
}

0 个答案:

没有答案