Сортировка столбцов на стороне сервера, когда данные не из базы данных - PullRequest
0 голосов
/ 10 июня 2019

Когда я не использую серверную часть, не имеет значения, как я называю столбцы в массиве, сортировка работает только для каждого столбца.Однако теперь я использую 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);
}
...