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

ThinkPHP 實作批次刪除功能完整範例

     編輯:PHP 相關知識

ThinkPHP 實作批次刪除功能完整範例

本文提供基於 ThinkPHP 框架的批次刪除完整實作,包含前端介面(Bootstrap)、JavaScript 交互邏輯(AJAX)與後端 PHP 處理三層代碼,可直接套用至專案中。

前端 HTML 佈局(Bootstrap 風格)

<div class="panel panel-default">
  <div class="panel-heading">
    留言列表
    <a class="btn btn-xs btn-default pull-right" href="javascript:window.history.back();">返回</a>
    <a class="btn btn-xs btn-info pull-right mr-5" id="discard" href="javascript:;">刪除</a>
  </div>
  <table class="table">
    <thead>
      <tr>
        <th><input class="all" type="checkbox"/></th>
        <th>id</th>
        <th>名稱</th>
        <th>郵箱</th>
        <th>內容</th>
        <th>日期時間</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <form>
        <volist name="list" id="vo" empty="$empty">
          <tr>
            <td><input name="delete[]" type="checkbox" value="{$vo.id}" /></td>
            <td>{$vo.id}</td>
            <td>{$vo.name}</td>
            <td>{$vo.email}</td>
            <td>{$vo.subject}</td>
            <td>{$vo.datetime|date="Y-m-d H:i", ###}</td>
            <td>
              <a class="delete" href="javascript:;" data-id="{$vo.id}">刪除</a>
            </td>
          </tr>
        </volist>
      </form>
    </tbody>
  </table>
</div>

JavaScript 處理邏輯(jQuery + Layer 提示框)

/* 批次刪除 */
// 全選功能
$('.all').click(function() {
  if($(this).is(':checked')) {
    $(':checkbox').attr('checked', 'checked');
  } else {
    $(':checkbox').removeAttr('checked');
  }
});

// 批次刪除按鈕點擊
$('#discard').click(function() {
  if($(':checked').size() > 0) {
    layer.confirm('確定要刪除嗎?', {
      btn: ['確定','取消'],
      shade: false
    }, function(){
      $.post("{:U('Single/discard')}", {data: $('form').serializeArray()}, function(res) {
        if(res.state == 1) {
          layer.msg(res.message, {icon: 1, time: 1000});
        } else {
          layer.msg(res.message, {icon: 2, time: 1000});
        }
        setTimeout(function() { location.reload(); }, 1000);
      });
    }, function(){
      layer.msg('取消了刪除!', {time: 1000});
    });
  } else {
    layer.alert('沒有選擇!');
  }
});

後端 PHP 控制器代碼

public function discard() {
  $contact = M('contact');
  $deleteArr = I('post.data');
  
  for($i = 0; $i < count($deleteArr); $i++) {
    $contact->delete($deleteArr[$i]['value']);
  }
  
  $this->ajaxReturn(array('message' => '刪除成功!'));
}

關鍵點說明

  • 前端:使用 name="delete[]" 陣列命名,配合 serializeArray() 自動組裝成結構化資料傳給後端
  • 交互:Layer 提供友好的確認對話框與訊息提示,避免誤操作
  • 後端:遍歷陣列逐筆刪除,若資料量大建議改用 where('id', 'in', $ids)->delete() 批次 SQL 提升效能
  • 安全:實際專案中應加入權限驗證、CSRF Token 驗證與軟刪除機制

優化建議

// 大量資料時建議使用單條 SQL
$ids = array_column($deleteArr, 'value');
$contact->where('id', 'in', $ids)->delete();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved