Пагинация в 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, время: 13:03. |