Ag-grid Php Example May 2026
INSERT INTO users (name, email, age, country, salary) VALUES ('John Doe', 'john@example.com', 28, 'USA', 55000), ('Jane Smith', 'jane@example.com', 32, 'Canada', 65000), ('Carlos Mendez', 'carlos@example.com', 45, 'Mexico', 48000); <?php header('Content-Type: application/json'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST'); $host = 'localhost'; $dbname = 'ag_grid_demo'; $username = 'root'; $password = '';
try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die(json_encode(['error' => 'Database connection failed'])); } ?> <?php require_once 'config.php'; // Get request parameters from AG Grid $startRow = isset($_GET['startRow']) ? (int)$_GET['startRow'] : 0; $endRow = isset($_GET['endRow']) ? (int)$_GET['endRow'] : 100; $sortModel = isset($_GET['sortModel']) ? json_decode($_GET['sortModel'], true) : []; $filterModel = isset($_GET['filterModel']) ? json_decode($_GET['filterModel'], true) : []; ag-grid php example
// Grid configuration const gridOptions = { columnDefs: columnDefs, rowModelType: 'serverSide', serverSideStoreType: 'partial', cacheBlockSize: 100, pagination: true, paginationPageSize: 100, enableSorting: true, enableFilter: true, animateRows: true, onGridReady: function(params) { params.api.setServerSideDatasource(dataSource); } }; INSERT INTO users (name, email, age, country, salary)
// Data source for server-side pagination, sorting, filtering const dataSource = { getRows: function(params) { const requestData = { startRow: params.startRow, endRow: params.endRow, sortModel: JSON.stringify(params.sortModel), filterModel: JSON.stringify(params.filterModel) }; true) : []
/ag-grid-php-example ├── index.html (AG Grid frontend) ├── data.php (Server-side data handler) └── config.php (Database configuration) 1. Database Setup (MySQL) CREATE DATABASE ag_grid_demo; USE ag_grid_demo; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100), age INT, country VARCHAR(50), salary DECIMAL(10,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
// Execute main query $stmt = $pdo->prepare($sql); foreach ($params as $key => $value) { $stmt->bindValue($key, $value); } $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);