Aggrid Php Example Updated Jun 2026
// Define the grid columns $columns = [ ['headerName' => 'Name', 'field' => 'name'], ['headerName' => 'Email', 'field' => 'email'], ['headerName' => 'Department', 'field' => 'department'] ];
$stmt = $pdo->prepare($sql);
Implementing with PHP involves a two-part architecture: a PHP backend to serve data (usually in JSON format) and a JavaScript frontend to render the grid. 1. The PHP Backend ( data.php ) aggrid php example updated
<script type="module"> const gridOptions = columnDefs: [ field: "id", sortable: true, filter: true , field: "name", sortable: true, filter: true , field: "email", sortable: true, filter: true ], rowModelType: 'serverSide', serverSideDatasource: getRows: (params) => fetch('/api/users', method: 'POST', headers: 'Content-Type': 'application/json' , body: JSON.stringify(params.request) ) .then(response => response.json()) .then(data => params.success(data.rows, data.lastRow)) .catch(error => params.fail());
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AG Grid PHP Example – Updated Server-Side</title> <script src="https://cdn.jsdelivr.net/npm/ag-grid-community@31.3.2/dist/ag-grid-community.min.js"></script> <style> html, body height: 100%; margin: 0; .ag-theme-alpine height: 90vh; width: 100%; </style> </head> <body> <div id="myGrid" class="ag-theme-alpine"></div> <script> // Define columns const columnDefs = [ field: "id", sortable: true, filter: "agNumberColumnFilter" , field: "product_name", headerName: "Product Name", sortable: true, filter: "agTextColumnFilter" , field: "category", sortable: true, filter: "agSetColumnFilter" , field: "price", sortable: true, filter: "agNumberColumnFilter" , field: "stock_quantity", headerName: "Stock", sortable: true , field: "last_updated", headerName: "Last Updated", sortable: true, filter: "agDateColumnFilter" ]; // Define the grid columns $columns = [
: PHP 8.x connects to a database via PDO and outputs clean JSON. 1. The Database Setup
// Render the grid echo $grid->render(); To maintain a clean separation of concerns, our
: Always enforce accurate typing in your PHP outputs. Wrap metrics like IDs or Salaries in integer fields within your MySQL schemas so JavaScript parses filters properly without text casting errors.
To maintain a clean separation of concerns, our application is split into two distinct layers:
// Build dynamic SQL based on AG Grid request (simplified for example) "SELECT * FROM users LIMIT :start, :limit" ; $stmt = $pdo->prepare($sql); $stmt->bindValue( , (int)$start, PDO::PARAM_INT); $stmt->bindValue(
<?php // Include the AG Grid library require_once 'ag-grid-community.js';
