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

PHP 文本型數據庫分類排序實現:結合 JavaScript 實現動態多欄排序

     編輯:PHP 綜合知識

場景描述

使用文本文件作為輕量級數據存儲時,實現前端點擊欄標題動態排序(升序/降序切換),無需關系數據庫支持。

排序效果演示圖

數據格式約定

  • 每條記錄一個文件,存放於 data/ 目錄
  • 文件內容格式:歌曲名稱|歌手|大小
  • 示例:找一個字代替.txt → 找一個字代替|卓依婷|48554

核心算法思路

  1. 讀取所有文件,解析字段存入數組
  2. 將待排序字段值存入 $sort_array[]
  3. 根據 $dir 參數執行 asort()(升序)或 arsort()(降序)
  4. 提取排序後的鍵名順序存入 $key_array[]
  5. 按 $key_array 順序重新讀取文件輸出

關鍵技術亮點

1. PHP + JavaScript 混合編程

<script>
sorted = "<?echo $sorted;?>";
dir = parseInt("<?echo $dir;?>");
function sortby(obj) {
    sorted == obj.ename ? mydir = -dir : mydir = dir;
    obj.href = location.pathname + "?sorted=" + obj.ename + "&dir=" + mydir;
}
function tips(obj) {
    sorted == obj.ename ? mydir = -dir : mydir = dir;
    obj.title = "按[" + obj.chname + "][" + (mydir>0?"降序":"升序") + "]排列";
}
</script>

2. HTML 元素自定義屬性傳遞參數

<a href='#' onmouseover='tips(this)' onmousedown='sortby(this)' 
   chname='歌手' ename='singer'>歌手</a>

利用 chname(中文名)、ename(字段名)自定義屬性,JavaScript 直接讀取,避免硬編碼。

3. 三元運算子巧妙應用

$dir > 0 ? asort($sort_array) : arsort($sort_array);
// 狀態欄提示
obj.title = "按[" + obj.chname + "][" + (mydir>0?"降序":"升序") + "]排列";

4. 鏈接偽協議技巧

obj.href = "sortby: 按[歌手][升序]排列" —— 以 字母: 內容 形式設置 href,瀏覽器狀態欄顯示自定義文本而非 URL。

完整代碼結構

單文件包含:配置讀取、JS 邏輯、HTML 表格、PHP 讀取排序輸出。採用雙次讀取文件策略(首次構建排序索引,二次按序輸出),權衡內存與速度;大數據量建議首次讀取時緩存內容到內存數組。

擴展方向

  • 增加分頁顯示(受篇幅限制未實現)
  • 支持多字段組合排序
  • 引入緩存機制減少 I/O
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved