期待どおりにデータがロードされました。ページ数も数えました。しかし、ページ番号を変更すると、同じデータが表示されます。
jQgird コードは次のとおりです。
$("#list").jqGrid({
url: "classes/classesController.php",
datatype: "json",
mtype: "POST",
postData: {method:"getLogsList"},
colNames: ["Id","Ip", "Hostname", "Log", "Ημ/νια"],
colModel: [
{ name: "log_id", index:"log_id", width: 100, sortable:false, hidden:true},
{ name: "ip", index: "ip", width: 130, searchoptions:{sopt:['eq']} },
{ name: "hostname", index:"hostname", width: 180 , searchoptions:{sopt:['eq']}},
{ name: "log", index:"log", width: 180, align: "right", searchoptions:{sopt:['eq']}},
{ name: "date", index:"date", width: 180, align: "right", searchoptions:{sopt:['eq']}}
],
jsonReader: { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, cell: "cell", id: "id",},
caption: "Logs",
gridview: true,
rownumbers: true,
height: 'auto',
shrinkToFit: false,
rowNum:2,
pager: '#gridpager'
});
そしてここにphp部分があります:
init_mysql();
$response = new stdClass();
// Getting pages number (for jqGrid pager)
if(!$sidx) $sidx =1;
$result = mysql_query("SELECT COUNT(*) AS count FROM logs");
$row = mysql_fetch_array($result);
$count = $row['count'];
if( $count >0 ) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
if ($page > $total_pages) $page=$total_pages;
$start = $limit*$page - $limit;
$response->page = $page;
$response->total = $total_pages;
$response->records = $count;
// Getting data for jqGrid table
$data = mysql_query("SELECT * FROM logs ORDER BY log_id DESC");
$i = 0;
if(mysql_num_rows($data))
{
while($row = mysql_fetch_array($data))
{
$response->rows[$i]['id']=$i+1;
$response->rows[$i]['cell']=array('log_id'=>$row['log_id'],'ip'=>$row['ip'],'hostname'=>$row['host'],'log'=>$row['input'],'date'=>$row['date']);
$i++;
}
}
echo json_encode($response);
なぜこれが起こるのですか?リクエストで見たように、すべて正常に動作します。1ページ目は2ページ目になりました..
method=getLogsList&_search=false&nd=1371379260922&rows=33&page=2&sidx=&sord=asc