
在 web 应用开发中,根据用户在表单中的选择来更新数据库是常见的需求。codeigniter 4 提供了一套强大且灵活的工具来处理这类操作,其中推荐的方式是使用其内置的 model 类。本教程将引导您完成从视图层捕获单选按钮输入到控制器处理数据,再到模型层执行数据库更新的整个流程。
首先,我们需要一个 HTML 表单来呈现单选按钮,并允许用户进行选择。在 CodeIgniter 4 中,可以使用 form_open_multipart 辅助函数来创建表单,并使用 set_radio 辅助函数来在表单重新加载时保持选中的状态。
<!-- app/Views/home/covid_form.php 或其他视图文件 -->
<form method="post" action="<?= base_url('home/savecovid') ?>">
<?= csrf_field() ?> <!-- 强烈建议添加CSRF保护 -->
<div class="form-group">
<label>请选择注解状态:</label><br>
<input type="radio" name="anotasi1" value="Positif"
<?= set_radio('anotasi1', 'Positif'); ?>/> Positif<br>
<input type="radio" name="anotasi1" value="Negatif"
<?= set_radio('anotasi1', 'Negatif'); ?>/> Negatif<br>
<input type="radio" name="anotasi1" value="Netral"
<?= set_radio('anotasi1', 'Netral'); ?>/> Netral
</div>
<button type="submit" name="saveCovid">提交</button>
</form>关键点:
CodeIgniter 4 推荐使用 Model 类来与数据库进行交互。Model 封装了数据库表的逻辑,使得数据操作更加清晰、可维护。
首先,创建一个名为 AnotasiModel 的模型文件(例如 app/Models/AnotasiModel.php):
<?php namespace App\Models;
use CodeIgniter\Model;
class AnotasiModel extends Model
{
protected $table = 'tbl_anotasi'; // 数据库表名
protected $primaryKey = 'id'; // 表的主键,假设为 'id'
protected $useAutoIncrement = true; // 主键是否自增
protected $returnType = 'array'; // 默认返回类型可以是 'array' 或 'object'
protected $useSoftDeletes = false; // 是否使用软删除
protected $allowedFields = ['anotasi']; // 允许更新的字段
// Dates
protected $useTimestamps = false; // 是否使用时间戳字段 (created_at, updated_at, deleted_at)
protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
// Validation
protected $validationRules = [];
protected $validationMessages = [];
protected $skipValidation = false;
protected $cleanValidationRules = true;
// Callbacks
protected $allowCallbacks = true;
protected $beforeInsert = [];
protected $afterInsert = [];
protected $beforeUpdate = [];
protected $afterUpdate = [];
protected $beforeFind = [];
protected $afterFind = [];
protected $beforeDelete = [];
protected $afterDelete = [];
}关键点:
控制器负责接收来自表单的数据,进行必要的处理(如验证),然后调用模型来执行数据库操作。
<?php namespace App\Controllers;
use App\Models\AnotasiModel; // 引入模型
use CodeIgniter\Controller;
class Home extends Controller
{
public function savecovid()
{
// 1. 检查是否为 POST 请求
if ($this->request->getMethod() === 'post') {
// 2. 获取表单数据
$anotasiValue = $this->request->getPost('anotasi1');
$recordId = 1; // 假设我们要更新 ID 为 1 的记录。在实际应用中,这个ID通常会通过URL参数、隐藏字段或会话来获取。
// 3. 数据验证 (强烈建议)
$rules = [
'anotasi1' => 'required|in_list[Positif,Negatif,Netral]'
];
if (! $this->validate($rules)) {
// 验证失败,重定向回表单并显示错误信息
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
// 4. 准备更新数据
$data = [
'anotasi' => $anotasiValue
];
// 5. 实例化模型并执行更新
$anotasiModel = new AnotasiModel();
// 使用模型的 update 方法更新数据
// 第一个参数是主键值,第二个参数是包含更新数据的数组
$updateResult = $anotasiModel->update($recordId, $data);
if ($updateResult) {
// 更新成功
return redirect()->to('/')->with('success', '注解信息更新成功!');
} else {
// 更新失败(例如,ID不存在或数据库错误)
return redirect()->back()->with('error', '注解信息更新失败,请重试。');
}
} else {
// 如果不是 POST 请求,则重定向或显示错误
return redirect()->to('/')->with('error', '无效的请求方法。');
}
}
// 假设您有一个方法来显示表单
public function index()
{
return view('home/covid_form');
}
}关键点:
确保您的路由已正确配置,以便能够访问 Home 控制器中的 savecovid 和 index 方法。
// app/Config/Routes.php
$routes->get('/', 'Home::index'); // 显示表单
$routes->post('home/savecovid', 'Home::savecovid'); // 处理表单提交通过遵循 CodeIgniter 4 的 Model-View-Controller (MVC) 模式,并利用其提供的 Model 类,您可以高效且安全地处理数据库更新操作。本教程展示了如何从视图层捕获单选按钮输入,通过控制器进行处理和验证,最终通过模型将数据更新到数据库。正确地使用 $allowedFields、数据验证和 CSRF 保护是构建健壮和安全 Web 应用程序的关键。
以上就是CodeIgniter 4 中使用单选按钮更新数据库表的教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号