2015-10-19 8 views
0

Когда я отсортировал свою таблицу, я получу несколько записей на второй странице, а некоторые другие записи не отображаются.Datatables, неправильные результаты после разбивки на страницы

это первый раз, когда я использую datatables, это таблица, в которой вы можете получить записи из всех магазинов, созданных на веб-сайте. Пока я перехожу на следующую страницу, иногда одна из моих записей ушла, и вместо нее есть двойная запись с первой страницы.

public function winkeltables() 
{ 
    $table = 'alle_winkels'; 
    $primaryKey = 'w_id'; 
    $id = $_GET['k_id']; 
    $columns = [ 
     ['db' => 'w_logo', 'dt' => 0, 'formatter' => function ($d, $row) { 
      if ($d == "") { 
       return ""; 
      } 
      return "<img class='thumb' src='/" . $d . "'/>"; 
     }], 
     ['db' => 'k_beoordeling', 'dt' => 1, 'formatter'=> function($d, $row){ 
      return beoordeling($d); 
     }], 
     ['db' => 'w_naam', 'dt' => 2], 
     ['db' => 'w_land', 'dt' => 3], 
     ['db' => 'w_straat', 'dt' => 4], 
     ['db' => 'w_postcode', 'dt' => 5], 
     ['db' => 'w_woonplaats', 'dt' => 6], 
     ['db' => 'w_id', 'dt' => 7, 'formatter' => function ($d, $row) { 
      return "<a data-id='" . $d . "' href='/winkeldetail?w_id=" . $d . "'>Bekijk</a>"; 
     }], 
    ]; 
    $sql_details = [ 
     'user' => 'x', 
     'pass' => 'x', 
     'db' => 'x', 
     'host' => 'x' 
    ]; 

    if($id != "") 
    { 
     $where = ["k_id = " . $id]; 
     echo json_encode(
      \SSP::complex($_GET, $sql_details, $table, $primaryKey, $columns, $where) 
     ); 
    } 
    else{ 
     echo json_encode(
      \SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns) 
     ); 
    } 

    die; 
} 

Сценарий на мой взгляд:

<script> 
    $(document).ready(function() { 
     var dt = $('#example').DataTable({ 
      "processing": true, 
      "serverSide": true, 
      "ajax": "/datatables/winkel", 
      "language": { 
       "url": "http://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Dutch.json" 
      } 
     }); 
     $('#example tbody').on('click', 'tr', function() { 
      var url = $(this).find('td').last().find('a').attr('href'); 
      if(url) { 
       window.location = url; 
      } 
     }); 
    }); 
</script> 

Я использую стандартные файлы из www.datatables.net

ответ

0

Я уже решил свою собственную проблему. Я решил проблему, добавив еще один порядок в файл ssp.php.

Новый код:

if ($requestColumn['orderable'] == 'true') { 
       $dir = $request['order'][$i]['dir'] === 'asc' ? 
        'ASC' : 
        'DESC'; 

       $orderBy[] = '`'.$column['db'].'` '.$dir . ', '. '`'.'w_naam'.'`'. ' ASC'; 
      } 

старый код был:

if ($requestColumn['orderable'] == 'true') { 
       $dir = $request['order'][$i]['dir'] === 'asc' ? 
        'ASC' : 
        'DESC'; 

       $orderBy[] = '`'.$column['db'].'` '.$dir; 
      } 

Я не знаю, если этот код является эффективным, но по крайней мере он работает сейчас!

Смежные вопросы