phpMyDataGrid 是一款輕量級(<100KB)PHP 數據表格組件,支持 MySQL/Oracle,提供分頁、排序、搜索、內聯編輯、刪除、導出等開箱即用功能。本文以 MySQL 為例,演示從建表到頁面呈現的完整流程。
CREATE DATABASE `guru`;
USE `guru`;
CREATE TABLE `employees` (
`id` INT(6) NOT NULL AUTO_INCREMENT,
`name` CHAR(20) DEFAULT NULL,
`lastname` CHAR(20) DEFAULT NULL,
`salary` FLOAT DEFAULT NULL,
`age` INT(2) DEFAULT NULL,
`afiliation` DATE DEFAULT NULL,
`status` INT(1) DEFAULT NULL,
`active` TINYINT(1) DEFAULT NULL,
`workeddays` INT(2) DEFAULT NULL,
`photo` CHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `employees` VALUES
(1, 'Ana', 'Trujillo', 2000, 45, '2005-05-13', 1, 1, 10, '1.jpg'),
(2, 'Jennifer', 'Aniston', 3500, 23, '2004-10-22', 1, 0, 0, '2.jpg'),
(3, 'Michael', 'Norman', 1200, 19, '2007-01-10', 1, 1, 5, '3.jpg'),
(4, 'Vanessa', 'Black', 6500, 31, '2000-11-05', 1, 1, 30, '4.jpg'),
(5, 'Michael', 'Strauss', 3200, 45, '2006-10-21', 2, 0, 22, '5.jpg'),
(6, 'William', 'Brown', 2300, 21, '2001-03-10', 3, 1, 10, '6.jpg'),
(7, 'Lucca', 'Normany', 2800, 36, '2006-10-02', 3, 1, 20, '7.jpg');
<?php
include("phpmydatagrid.class.php");
$objGrid = new datagrid;
$objGrid->closeTags(true); // XHTML 兼容
$objGrid->friendlyHTML(); // 友好輸出
$objGrid->methodForm("get"); // 表單方法
// 數據庫連接
$objGrid->conectadb("127.0.0.1", "root", "root", "guru");
$objGrid->salt("Myc0defor5tr0ng3r-Pro3EctiOn"); // 加密鹽
$objGrid->language("en"); // 語言
// 功能按鈕:新增、編輯、刪除、查看
$objGrid->buttons(true, true, true, true);
// 編輯表單名稱
$objGrid->form('employee', true);
// 可搜索字段
$objGrid->searchby("name,lastname");
// 數據源表
$objGrid->tabla("employees");
// 主鍵
$objGrid->keyfield("id");
// 分頁大小
$objGrid->datarows(20);
// 默認排序
$objGrid->orderby("name", "ASC");
/* ===== 列定義 =====
FormatColumn(字段名, 顯示標題, 最大長度, 編輯長度, 是否必填, 寬度, 對齊, 類型/格式)
*/
$objGrid->FormatColumn("id", "ID Employee", 5, 5, 1, "50", "center", "integer");
$objGrid->FormatColumn("name", "Name", 30, 30, 0, "150", "left");
$objGrid->FormatColumn("lastname", "Last name", 30, 30, 0, "150", "left");
$objGrid->FormatColumn("age", "Age", 5, 5, 0, "50", "right");
// 日期格式:dmy 分隔符 /
$objGrid->FormatColumn("afiliation", "Afiliation Date", 10, 10, 0, "100", "center", "date:dmy:/");
// 下拉選擇:值_標籤 用冒號分隔
$objGrid->FormatColumn("status", "Status", 5, 5, 0, "60", "left", "select:1_Single:2_Married:3_Divorced");
// 復選框:值_否_是
$objGrid->FormatColumn("active", "Active", 2, 2, 0, "50", "center", "check:No:Yes");
// 貨幣格式:符號 €
$objGrid->FormatColumn("salary", "Salary", 10, 10, 0, "90", "right", "money:€");
// 柱狀圖:百分比模式,最大值 31
$objGrid->FormatColumn("workeddays", "Work days", 5, 2, 0, "50", "right", "chart:percent:val:31");
$objGrid->checkable(); // 顯示複選框
$objGrid->setHeader(); // 輸出表頭
$objGrid->ajax('silent'); // AJAX 靜默模式
echo '<html><head><title>PHPDataGrid</title></head><body><div align="center"><br />';
$objGrid->grid(); // 渲染表格
echo '</div></body></html>';
$objGrid->desconectar(); // 關閉連接
?>
| 類型參數 | 語法 | 示例 | 效果 |
|---|---|---|---|
| 整數 | integer | integer | 只允許數字輸入 |
| 日期 | date:格式:分隔符 | date:dmy:/ | 日期選擇器,格式 DD/MM/YYYY |
| 下拉選單 | select:值1_標籤1:值2_標籤2 | select:1_啟用:0_禁用 | 編輯時顯示 <select> |
| 復選框 | check:假值標籤:真值標籤 | check:否:是 | 編輯時顯示 <checkbox> |
| 貨幣 | money:貨幣符號 | money:¥ | 顯示 ¥ 1,234.56 |
| 柱狀圖 | chart:percent:val:最大值 | chart:percent:val:100 | 數值可視化進度條 |
原組件使用 MySQL 函數。適配 Oracle 兩條路徑:
phpmydatagrid.class.php 中連接/查詢/獲取字段等函數為 oci_* 系列。性能一般。phporadatagrid.class.php 供 Oracle 項目調用。dgscripts.js 中渲染邏輯buttons() 參數動態傳入權限判斷phpMyDataGrid 以極小體積實現了功能完整的數據網格,適合後台管理、數據維護等 CRUD 密集型場景。通過 FormatColumn 靈活定義列行為,配合 AJAX 無刷新體驗,可快速構建專業級數據管理界面。