Пагинация в grid
Здравствуйте!
Не правильно работает пагинация в гриде. TableStore.js
Ext.define("STORE.store.TableStore", {
extend: "Ext.data.Store",
model: "STORE.model.TableModel",
storeId: "TableStore",
autoSync: true,
autoLoad: true,
pageSize: 4,
sorters: [{
property: 'id',
direction: 'desc'
}],
proxy: {
type: "ajax",
api: {
read: "data/read.php",
create: 'data/create.php',
update: 'data/update.php',
destroy: "data/remove.php"
},
reader: {
type: 'json',
root: 'user',
successProperty: 'success'
},
writer: {
type: 'json',
writeAllFields: true,
encode: true,
root: 'user'
}
}
})
Table.js
Ext.define("STORE.view.Table", {
extend: "Ext.grid.Panel",
alias: "widget.UserTable",
title: "user table",
store: "TableStore",
height: 300,
columns: [
{
text: "id",
dataIndex: "id"
},
{
text: "name",
dataIndex: "name",
flex: 1
},
{
text: "surname",
dataIndex: "surname",
flex: 1
},
{
text: "email",
dataIndex: "email",
flex: 1
}
],
dockedItems: [{
xtype: 'pagingtoolbar',
store:"TableStore",
dock: 'bottom',
displayInfo: true,
beforePageText: 'Page',
afterPageText: 'of {0}',
displayMsg: 'Users {0} - {1} of {2}'
}]
});
read.php
<?php
require_once('dbconnect.php');
$query = "SELECT * FROM store ";
$result = mysqli_query($db, $query) or die ("НЕ УДАЛОСЬ ДОБЫТЬ ДАННЫЕ");
$arr = array();
while($row = mysqli_fetch_array($result)){
$arr[] = $row;
}
echo json_encode(array(
"success" => mysql_errno() == 0,
"user" => $arr
));
mysqli_close($db)
?>
пагинация работает нормально. А таблица , такое чувство, будто вообще не знает о существовании пагинации(выводит не по 4 записи, а все сразу). скрин таблицы http://prntscr.com/4adz2s - - - - |
я не вижу никакой реализации паджинации в read.php. можно както так например (http://dev.mysql.com/doc/refman/5.0/en/select.html):
$query = 'select * from store limit '. (int)$page * (int)$page_size .', '. (int)$page_size;получение значений $page, $page_size сами прикрутите. кстати не вижу у вас никакой защиты от sql-инъекций ..я не про read.php а про пост о CRUD ..там где запись создавалась. функциями mysql_/mysqli_* уже не рекомендуют пользоваться, есть более современные средства в PHP (PDO например). |
Огромное спасибо!
Всё заработало теперь файл read.php выглядит так:
?php
require_once('dbconnect.php');
$page = $_GET['page'];
$limit = $_GET['limit'];
$query = 'SELECT * FROM store limit '. ((int)$page - 1) * (int)$limit .', '. (int)$limit ;
$result = mysqli_query($db, $query) or die ("НЕ УДАЛОСЬ ДОБЫТЬ ДАННЫЕ");
$arr = array();
while($row = mysqli_fetch_array($result)){
$arr[] = $row;
};
$total = mysqli_num_rows(mysqli_query($db, "SELECT * FROM store "));
echo json_encode(array(
"total" => $total,
"success" => mysql_errno() == 0,
"user" => $arr
));
mysqli_close($db)
?>
Тут тоже, не учтены sql-иньекции. |
| Часовой пояс GMT +3, время: 05:16. |