首頁 >php框架 >ThinkPHP >thinkphp多重選擇刪除

thinkphp多重選擇刪除

WBOY
WBOY原創
2023-05-26 13:34:10735瀏覽

thinkphp6是一款非常優秀的PHP開發框架,它基於MVC架構,開發效率高、易上手、安全可靠,同時極大簡化了程式碼編寫的流程。今天,讓我們來談談使用thinkphp6實作多選刪除的方法。

一、前言

多選刪除是現代Web應用程式的常見功能之一。它允許用戶在資料表格或清單中選擇多個項目,然後可以刪除它們。在這篇文章中,我們將介紹如何使用thinkphp6的控制器和模型來實現這個功能。

二、建立資料庫

首先,我們需要在MySQL資料庫中建立一個範例表。我們將使用命令列工具或phpMyAdmin來完成這個步驟。

CREATE TABLE example_table (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL ,
email varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

#####################################這將建立一個名為「 example_table」的新表,其中包含id,name和email欄位。 ######三、生成模型和控制器######接下來,我們需要根據上面建立的表格結構來產生一個模型和一個控制器。 ######使用thinkphp6的Artisan命令列工具可以快速產生這些檔案:######php think make:model ExampleModel --migration######運行上述命令將產生一個新的模型文件( app /Model/ExampleModel.php )和一個新的資料庫遷移檔案( database /migrations /yyyymmddhhmmss_create_example_model.php )。 ######php think make:controller ExampleController######執行上述指令將產生一個名為ExampleController.php的新檔案(app /Controller/ExampleController.php )。 ######四、寫程式碼######現在我們已經準備好要寫控制器程式碼來處理多選刪除了。在控制器中,我們需要實作兩個主要的action函數:index(用於顯示所有資料)和delete(用於處理刪除請求)。 ######在app /Controller /ExampleController.php檔案中,加入以下程式碼:###
<?php
namespace appcontroller;

use thinkacadeView;
use thinkRequest;
use appmodelExampleModel;

class ExampleController
{
    public function index()
    {
        $list = ExampleModel::all();

        return View::fetch('index', [
            'list' => $list,
        ]);
    }

    public function delete(Request $request)
    {
        $ids = $request->param('ids');

        foreach ($ids as $id) {
            ExampleModel::destroy($id);
        }

        return ['status' => 'success', 'message' => '删除成功'];
    }
}
###在上面的程式碼中,我們首先導入了類別,並定義了兩個函數index和delete。函數index用於從ExampleModel中取得所有數據,並將其傳遞到範本中。函數delete從HTTP請求中取得要刪除的ID列表,並使用ExampleModel::destroy方法刪除這些項目。 ######接下來,我們需要為範本新增一個多選框以及刪除按鈕。開啟app /View /example /index.html文件,新增以下程式碼:###
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Example</title>
</head>
<body>
    <h1>Example</h1>
    <table>
        <thead>
            <tr>
                <th><input type="checkbox" id="check-all"></th>
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
        <?php foreach ($list as $item): ?>
            <tr>
                <td><input type="checkbox" name="ids[]" value="<?php echo $item->id ?>"></td>
                <td><?php echo $item->id ?></td>
                <td><?php echo $item->name ?></td>
                <td><?php echo $item->email ?></td>
            </tr>
        <?php endforeach ?>
        </tbody>
    </table>
    <button id="btn-delete">删除</button>
    <script>
        var btnDelete = document.querySelector('#btn-delete');
        btnDelete.addEventListener('click', function () {
            var ids = [];
            var checkboxes = document.querySelectorAll('input[type=checkbox][name^=ids]:checked');
            for (var i = 0; i < checkboxes.length; i++) {
                ids.push(checkboxes[i].value);
            }
            if (ids.length > 0) {
                if (confirm('确定删除?')) {
                    var xhr = new XMLHttpRequest();
                    xhr.open('POST', '/example/delete');
                    xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
                    xhr.onload = function () {
                        var result = JSON.parse(xhr.responseText);
                        if (result.status == 'success') {
                            alert(result.message);
                            location.reload();
                        } else {
                            console.error(result);
                            alert('删除失败');
                        }
                    };
                    xhr.onerror = function () {
                        console.error(xhr);
                        alert('网络异常,请重试');
                    };
                    xhr.send(JSON.stringify({ids: ids}));
                }
            } else {
                alert('请选择要删除的项目');
            }
        });
        var checkAll = document.querySelector('#check-all');
        checkAll.addEventListener('click', function () {
            var checkboxes = document.querySelectorAll('input[type=checkbox][name^=ids]');
            for (var i = 0; i < checkboxes.length; i++) {
                checkboxes[i].checked = checkAll.checked;
            }
        });
    </script>
</body>
</html>
###在上述程式碼中,我們使用了JavaScript來取得所有選取的多重選取框,並將這些ID傳遞給伺服器的/ delete路由。 ######五、測試######現在,我們可以開啟控制台,使用以下指令將Web伺服器啟動。 ######php think run######然後在瀏覽器中輸入localhost:8000/example,即可開啟example的首頁,點擊多重選取方塊以選擇要刪除的項目。最後點選刪除按鈕即可刪除選擇的項目。 ######六、結論######在這篇文章中,我們使用thinkphp6的控制器,模型和視圖來實現了多選刪除的功能。這個功能可以在Web應用程式中發揮重要作用,優化應用程式的使用者體驗。 ###

以上是thinkphp多重選擇刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn