Codeigniter 是需要数据库集成和接口的项目的流行选择。主要原因是用于设置和使用数据库连接的简单框架内选项。这意味着 Codeigniter 是 mvc CRUD 应用程序的绝佳选择。在详细介绍这个 Codeigniter CRUD
Codeigniter 是需要数据库集成和接口的项目的流行选择。主要原因是用于设置和使用数据库连接的简单框架内选项。这意味着 Codeigniter 是 mvc CRUD 应用程序的绝佳选择。在详细介绍这个 Codeigniter CRUD 应用程序之前,我将描述创建、读取、更新和删除的基础知识。
所有基于数据库的应用程序都在一个简单的过程中运行,该过程涉及四个简单的操作——创建、读取(在某些情况下检索)、更新和删除。所有这些操作都应用于数据库,并且对于应用程序的操作是必不可少的。
由于应用程序的用户具有不同的权限,因此需要注意并非所有用户都可以在应用程序中执行这四个操作。类似地,应用程序进程也可以在没有任何特定用户输入的情况下执行这些功能。
创建操作用于创建或向数据库添加数据。
Read/Retrieve 操作用于读取已经保存在数据库中的数据。
更新操作用于保存或更新数据库中的数据。
删除操作用于从数据库中删除数据。
现在您已经对 CRUD 有了基本的了解,我将演示如何在 Codeigniter CRUD 应用程序中实现这些想法。
我将从创建作为本教程基础的数据库和表开始。出于 Codeigniter CRUD 示例的目的,我将数据库命名为“crud”,将表命名为“faqs”。使用以下 sql 语句进行创建:
CREATE TABLE IF NOT EXISTS `faqs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL COMMENT 'title',
`slug` varchar(255) NOT NULL,
`employee_name` varchar(255) NOT NULL COMMENT 'employee name',
`employee_salary` double NOT NULL COMMENT 'employee salary',
`employee_age` int(11) NOT NULL COMMENT 'employee age',
PRIMARY KEY (`id`),
KEY `slug` (`slug`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='datatable demo table';
一旦数据库和表启动并运行,下一步就是向表常见问题解答添加值。注意表中的字段包括创建数据库和表之后。
设置数据库和表后的下一步是配置数据库特定设置,包括主机、数据库名称、用户凭据。这通常通过将这些信息添加到 Codeigniter 数据库配置文件来完成,该文件通常位于文件 application/config/database.PHP 中。
出于本教程的目的,我设置了以下值:
Database hostname: ‘localhost’
Database name: ‘crud
Database username: ‘root’
Database passWord: ‘root’
完整的数据库配置如下:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'crud',
'dbdriver' => 'Mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
下一个主要步骤是创建处理用户请求的控制器,与模型(业务逻辑组件)对话,最后加载适当的视图。
控制器位于文件“application/controllers/Faqs.php”中。出于本教程的目的,我创建了一个具有三个主要功能的控制器。index()函数列出所有FAQ条目,create()函数添加新FAQ条目,调用edit()函数编辑已经发布的FAQ条目,最后delete()函数从数据库中删除FAQ条目. 这是控制器的完整代码:
class Faqs extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->library('form_validation');
$this->load->model('faqs_model');
$this->load->helper('url_helper');
}
public function index()
{
$data['faqs'] = $this->faqs_model->get_faqs();
$data['title'] = 'Faqs arcHive';
$this->load->view('templates/header', $data);
$this->load->view('faqs/index', $data);
$this->load->view('templates/footer');
}
public function view($slug = NULL)
{
$data['faqs_item'] = $this->faqs_model->get_faqs($slug);
$data['title'] = $data['faqs_item']['title'];
$this->load->view('templates/header', $data);
$this->load->view('faqs/view', $data);
$this->load->view('templates/footer');
}
public function create()
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Create a FAQ item';
$this->form_validation->set_rules('title', 'Designation', 'required');
$this->form_validation->set_rules('employee_name', 'Name', 'required');
$this->form_validation->set_rules('employee_salary', 'Salary', 'required');
$this->form_validation->set_rules('employee_age', 'Age', 'required');
}
public function save(){
$this->form_validation->set_rules('title', 'Designation', 'required');
$this->form_validation->set_rules('employee_name', 'Name', 'required');
$this->form_validation->set_rules('employee_salary', 'Salary', 'required');
$this->form_validation->set_rules('employee_age', 'Age', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header');
$this->load->view('faqs/create');
$this->load->view('templates/footer');
}
else
{
$this->faqs_model->set_faqs();
$this->load->view('templates/header');
$this->load->view('faqs/success');
$this->load->view('templates/footer');
}
}
public function edit()
{
$id = $this->uri->segment(3);
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Edit a faqs item';
$data['faqs_item'] = $this->faqs_model->get_faqs_by_id($id);
$this->form_validation->set_rules('title', 'Designation', 'required');
$this->form_validation->set_rules('employee_name', 'Name', 'required');
$this->form_validation->set_rules('employee_salary', 'Salary', 'required');
$this->form_validation->set_rules('employee_age', 'Age', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('faqs/edit', $data);
$this->load->view('templates/footer');
}
else
{
$this->faqs_model->set_faqs($id);
redirect( base_url() . 'index.php/faqs');
}
}
public function delete()
{
$id = $this->uri->segment(3);
$faqs_item = $this->faqs_model->get_faqs_by_id($id);
$this->faqs_model->delete_faqs($id);
redirect( base_url() . 'index.php/faqs');
}
}
该模型包含 MVC CRUD 应用程序的“业务”逻辑。就本教程而言,此应用程序的模型与数据库进行通信。因此,模型包含与数据库交互并执行数据选择、插入、更新和删除操作的代码。
为本教程开发的模型具有几个功能,包括:get_faqs() 函数,用于获取 FAQ 项目(通过 $slug 名称),get_faqs_by_id() 函数通过 ID 号获取 FAQ,set_faqs() 函数编辑并将新项目添加到数据库中, 和 delete_faqs() 函数,从数据库中删除特定项目。
请注意,此模型类已在目录“application/models/Faqs_model.php”中创建。
<?php
class Faqs_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function get_faqs($slug = FALSE)
{
if ($slug === FALSE)
{
$query = $this->db->get('faqs');
return $query->result_array();
}
$query = $this->db->get_where('faqs', array('slug' => $slug));
return $query->row_array();
}
public function get_faqs_by_id($id = 0)
{
if ($id === 0)
{
$query = $this->db->get('faqs');
return $query->result_array();
}
$query = $this->db->get_where('faqs', array('id' => $id));
return $query->row_array();
}
public function set_faqs($id = 0)
{
$this->load->helper('url');
$slug = url_title($this->input->post('title'), 'dash', TRUE);
$data = array(
'title' => $this->input->post('title'),
'slug' => $slug,
'employee_name' => $this->input->post('employee_name'),
'employee_salary' => $this->input->post('employee_salary'),
'employee_age' => $this->input->post('employee_age')
);
if ($id == 0) {
return $this->db->insert('faqs', $data);
} else {
$this->db->where('id', $id);
return $this->db->update('faqs', $data);
}
}
public function delete_faqs($id)
{
$this->db->where('id', $id);
return $this->db->delete('faqs');
}
}
模板的标题对所有页面都是通用的。请注意,此模板存储在application/views/templates/header.php 中。完整的 html 代码如下:
<!DOCTYPE html>
<html>
<head>
<title> Create a Simple MVC Codeigniter CRUD Application</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/CSS/bootstrap.min.css" />
</head>
<body>
<div class="container">
与页眉类似,页脚对所有页面都是通用的。该文件位于 application/views/templates/footer.php 中。完整的 HTML 代码如下:
</div>
</body>
</html>
此视图文件用于显示所有 FAQ 项目的列表。该文件由控制器的 index() 函数调用。该文件位于“application/views/faqs/index.php”。索引文件的完整代码如下:
<div class="container">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-right">
<a class="btn btn-success" href="Http://demo.itsolutionstuff.com/itemCRUD/create">Add FAQs</a>
</div>
</div>
</div>
<table class="table table-bordered">
<tbody><tr>
<th>Title</th>
<th>Employee Name</th>
<th>Salary</th>
<th>Age</th>
<th width="280px">Action</th>
</tr>
<?php foreach ($faqs as $faqs_item): ?>
<tr>
<td><?php echo $faqs_item['title']; ?></td>
<td><?php echo $faqs_item['employee_name']; ?></td>
<td><?php echo $faqs_item['employee_salary']; ?></td>
<td><?php echo $faqs_item['employee_age']; ?></td>
<td>
<a class="btn btn-info" href="<?php echo site_url('faqs/'.$faqs_item['slug']); ?>">Show</a>
<a class="btn btn-primary" href="<?php echo site_url('faqs/edit/'.$faqs_item['id']); ?>">Edit</a>
<a class="btn btn-primary" href="<?php echo site_url('faqs/delete/'.$faqs_item['id']); ?>">Delete</a>
</td>
</tr>
<?php endforeach; ?>
</tbody></table>
</div>
此视图文件由控制器的 view() 函数调用以显示特定的常见问题解答项目。该文件位于“application/views/news/view.php”中。视图文件的完整代码是:
<?php
echo '<h2>'.$faqs_item['title'].'</h2>';
echo $faqs_item['employee_name'];
echo $faqs_item['employee_salary'];
echo $faqs_item['employee_age'];
此视图由控制器类中的 create() 函数调用,并打印一个表单以将 FAQ 项目添加到数据库中。它位于文件 application/views/faqs/create.php 中。这是完整的代码:
<h2><?php echo $title; ?></h2>
<?php echo validation_errors(); ?>
<?php echo form_open('faqs/create'); ?>
<table>
<tr>
<td><label for="title">Title</label></td>
<td><input type="input" name="title" /></td>
</tr>
<tr>
<td><label for="Employee Name">Name</label></td>
<td><input type="input" name="employee_name" /></td>
</tr>
<tr>
<td><label for="Employee Salary">Salary</label></td>
<td><input type="input" name="employee_salary" /></td>
</tr>
<tr>
<td><label for="Employee Age">Age</label></td>
<td><input type="input" name="employee_age" /></td>
</tr>
<td><input type="submit" name="submit" value="Create faqs item" /></td>
</tr>
</table>
</form>
控制器的 edit() 函数调用此视图文件并打印一个表单来编辑 FAQ 项目。该文件位于 application/views/faqs/edit.php 中。编辑视图文件的完整代码为:
<h2><?php echo $title; ?></h2>
<?php echo validation_errors(); ?>
<?php echo form_open('faqs/edit/'.$faqs_item['id']); ?>
<table>
<tr>
<td><label for="title">Title</label></td>
<td><input type="input" name="title" value="<?php echo $faqs_item['title'] ?>" /></td>
</tr>
<tr>
<td><label for="Employee Name">Name</label></td>
<td><input type="input" name="employee_name" value="<?php echo $faqs_item['employee_name'] ?>" /></td>
</tr>
<tr>
<td><label for="Employee Salary">Salary</label></td>
<td><input type="input" name="employee_salary" value="<?php echo $faqs_item['employee_salary'] ?>" /></td>
</tr>
<tr>
<td><label for="Employee Age">Age</label></td>
<td><input type="input" name="employee_age" value="<?php echo $faqs_item['employee_age'] ?>" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="Edit faqs item" /></td>
</tr>
</table>
</form>
当 FAQ 项目成功添加到数据库时,控制器的 create() 函数调用此视图。该文件位于目录 application/views/faqs/success.php 中。这个非常简单的视图如下:
<p>FAQs added successfully!</p>
现在所有视图都完成了,是时候在 route.php 文件中配置路由了。好消息是这些路由可以通过使用正则表达式中的一个(或两个)或通配符来定义。该文件位于文件 application/config/routes.php 中。路线的代码是:
$route['faqs'] = 'faqs';
$route['404_override'] = 'custom404';
$route['faqs/create'] = 'faqs/create';
$route['faqs/create'] = 'faqs/save';
$route['faqs/edit/(:any)'] = 'faqs/edit/$1';
$route['faqs/view/(:any)'] = 'faqs/view/$1';
$route['faqs/(:any)'] = 'faqs/view/$1';
创建一个新控制器并在其中编写以下代码。
<?php
class custom404 extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->output->set_status_header('404');
$data['content'] = 'custom-error_404'; // This is your View name
$this->load->view('index',$data);//This is loading your template
}
}
?>
现在使用您的自定义消息创建一个名为“ custom-error_404.php ”的视图文件。
至此,您拥有了一个由 Codeigniter 提供支持的简单而完整的 MVC CRUD 应用程序。虽然在设计端有点粗糙,但该应用程序可以毫无问题地添加、显示和编辑常见问题解答项目。您可以将此 Codeigniter CRUD 应用程序用作您自己的 CMS 项目的基础。要查看正在运行的应用程序,请访问实时应用程序的 URL。
--结束END--
本文标题: 如何创建一个简单的 MVC Codeigniter CRUD 应用程序
本文链接: https://www.lsjlt.com/news/9342.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0