首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP DataGrid 實現數據庫表格直編:基於 phpMyDataGrid 的完整實戰

     編輯:PHP 綜合知識

項目簡介

phpMyDataGrid 是一款輕量級(<100KB)PHP 數據表格組件,支持 MySQL/Oracle,提供分頁、排序、搜索、內聯編輯、刪除、導出等開箱即用功能。本文以 MySQL 為例,演示從建表到頁面呈現的完整流程。

1. 測試數據準備

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');

2. 核心頁面代碼

<?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(); // 關閉連接
?>

3. 列類型格式詳解

類型參數語法示例效果
整數integerinteger只允許數字輸入
日期date:格式:分隔符date:dmy:/日期選擇器,格式 DD/MM/YYYY
下拉選單select:值1_標籤1:值2_標籤2select:1_啟用:0_禁用編輯時顯示 <select>
復選框check:假值標籤:真值標籤check:否:是編輯時顯示 <checkbox>
貨幣money:貨幣符號money:¥顯示 ¥ 1,234.56
柱狀圖chart:percent:val:最大值chart:percent:val:100數值可視化進度條

4. Oracle 適配方案

原組件使用 MySQL 函數。適配 Oracle 兩條路徑:

  1. OCI8 擴展:修改 phpmydatagrid.class.php 中連接/查詢/獲取字段等函數為 oci_* 系列。性能一般。
  2. SQL Relay(推薦):中間件轉發,保持原有 MySQL API 風格,性能更優。另存為 phporadatagrid.class.php 供 Oracle 項目調用。

5. 進階定製技巧

  • 自定義模板:覆蓋 dgscripts.js 中渲染邏輯
  • 權限控制:在 buttons() 參數動態傳入權限判斷
  • 導出 Excel:集成 PHPExcel 在工具欄添加導出按鈕
  • 大數據優化:開啟服務端分頁模式,避免全量載入

總結

phpMyDataGrid 以極小體積實現了功能完整的數據網格,適合後台管理、數據維護等 CRUD 密集型場景。通過 FormatColumn 靈活定義列行為,配合 AJAX 無刷新體驗,可快速構建專業級數據管理界面。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved