一个ci框架的小demo


最近在学习ci框架,作为一个初学者,在啃完一遍官方文档并也跟着官方文档的例程(新闻发布系统)做了一遍,决定在将之前练习PHP与MySQL数据库的用户管理系统再用ci框架实现一遍。

主要由三个简单的界面构成:


看起来很简单对不对!没有关系,这不重要~ 
接下来我们来看代码: 
ci的配置我就不用讲了哈,我的配置如下: 
database.php 配置文件

 'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'test',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',

一定要配置config.php中的base_url,原因你会知道的

$config['base_url'] = 'http://localhost:81/ciDemo/Code/';

接下来是控制器的代码: 
我建立了一个user.php的控制器,目录是application/controllers/user.php

<?php
/**
* 数据库的增删改查
*/
class User extends CI_controller
{ function __construct()
{
parent::__construct();
$this->load->model('user_model');
// $this->load->helper('url_helper');
$this->load->helper('url');
}
public function index()
{
// $this->load->model('user_model');
$arr = $this->user_model->getAll();
// var_dump($arr);
$data['title'] = 'Userlist'; $this->load->view('templates/header', $data);
$this->load->view('user/index',array('arr'=>$arr));
$this->load->view('templates/footer');
}
public function insert()
{
$this->load->helper('form'); $data['title'] = 'Create a new user'; // $this->load->model('user_model');
// $arr = array('uaername' => '111','password' => 'md5(222)' ); $this->load->view('templates/header', $data);
$this->load->view('user/adduser');
$this->load->view('templates/footer'); }
public function insert_ok()
{
// echo "join"; // if ($this->input->post('submit_user')) {
$arr = array(
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password'))
);
$query = $this->user_model->user_insert($arr);
// var_dump($query);
if ($query) {
// echo "添加成功";
// $this->index();
redirect('user/index');
} else {
echo "添加失败";
}
// }
}
public function update()
{
$this->load->helper('form'); $data['title'] = 'Update user'; // $this->load->model('user_model');
// $arr = array('uaername' => '111','password' => 'md5(222)' );
$id = $this->uri->segment(3, 0);
// echo $id;
$arr = $this->user_model->user_select($id);
// var_dump($arr);
//怎么把指定ID的username传到视图中去
$this->load->view('templates/header', $data);
$this->load->view('user/editUser', array('get_username'=>$arr));
$this->load->view('templates/footer');
}
public function update_ok()
{
// $this->load->model('user_model');
// $arr = array('username' => 'kkk','password' => 'md5(333)' );
$arr = array(
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password'))
);
// $id = $_GET['id'];
//怎么获取ID值?
$id = $this->uri->segment(3, 0);
$query = $this->user_model->user_update($id,$arr);
if ($query) {
// echo "删除成功";
// $this->index();
redirect('user/index');
} else {
echo "更新失败";
}
} public function delete()
{
$id = $this->uri->segment(3, 0);
// $this->load->model('user_model');
$query = $this->user_model->user_delete($id);
if ($query) {
// echo "删除成功";
// $this->index();
redirect('user/index');
} else {
echo "删除失败";
} }
// public function select()
// {
// // $this->load->model('user_model');
// $arr = $this->user_model->user_select();
// print_r($arr);
// echo $arr[0]->id;
// }
}

模型的代码: 
目录是application/models/user_model.php

<?php
/**
* 数据库增删改查......
*/
class User_model extends CI_Model
{
//构造函数
function __construct()
{
parent::__construct();
//connect to the database
$this->load->database();
//$this->load->insert($t_name,$data)
}
//所有数据
function getAll()
{
$res = $this->db->get('user');
return $res->result_array();
}
//增加数据
function user_insert($arr)
{
return $this->db->insert('user', $arr);
}
//更新数据
function user_update($id,$arr)
{
$this->db->where('id',$id);
return $this->db->update('user',$arr);
}
//删除数据
function user_delete($id)
{
$this->db->where('id',$id);
return $this->db->delete('user');
}
//查找数据
function user_select($id)
{
$this->db->where('id',$id);
$this->db->select('*');
$query = $this->db->get('user');
return $query->result_array();
} }

接下来是视图: 
用户列表的视图 application/views/user/index.php

<?php
// var_dump($arr);
?>
<h2>用户列表<a href="<?php echo site_url('user/insert');?>">添加用户</a></h2>
<table border="1" cellspacing="0" cellpadding="0" width="80%" bgcolor="#ABCDEF">
<tr>
<td>编号</td>
<td>用户名</td>
<td>操作</td>
</tr>
<?php $i=1; foreach($arr as $row):?>
<tr>
<td><?php echo $i;?></td>
<td><?php echo $row['username'];?></td>
<td><a href="<?php echo site_url().'/user/update/'.$row['id'];?>">更新</a>|<a href="<?php echo site_url().'/user/delete/'.$row['id'];?>">删除</a></td>
</tr>
<?php $i++; endforeach;?>
</table>

添加用户的视图:application/views/user/adduser.php

<!-- <h2>添加用户</h2> -->
<form action="<?php echo site_url("user/insert_ok");?>" method="post">
<?php //echo form_open('user/insert')?>
<table border="1" cellpadding="0" cellspacing="0" bgcolor="#ABCDEF" width="80%">
<tr>
<td>用户名</td>
<td><input type="text" name="username" id="username" placeholder="请输入合法用户名" required></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" id="password" placeholder="请输入密码" required></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="添加用户" name="submit_user"></td>
</tr>
</table>
</form>

更新用户的视图:application/views/user/edituser.php

<!-- <h2>更新用户</h2> -->
<form action="<?php foreach ($get_username as $row):?><?php echo site_url().'/user/update_ok/'.$row['id'];?><?php endforeach;?>" method="post">
<table border="1" cellpadding="0" cellspacing="0" bgcolor="#ABCDEF" width="80%">
<tr>
<td>用户名</td>
<td><input type="text" name="username" id="" placeholder="请输入合法用户名" required value="<?php foreach ($get_username as $row):?><?php echo $row['username'];?><?php endforeach;?>"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" id="" placeholder="请输入密码" required></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="更新用户"></td>
</tr>
</table>
</form>

为什么我的视图都没有HTML头和尾,因为我把他们分开写在了views视图下的templates文件夹里: 
application/views/templates/header.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $title; ?></title>
</head>
<body> <h1><?php echo $title; ?></h1>

application/views/templates/footer.php

 <em>&copy; 2016</em>
</body>
</html>

一个用户管理的ci框架的小demo--转载的更多相关文章

  1. 通过一个用户管理实例学习路由react-router-dom知识

    我们通过一个用户管理实例来学习react-router-dom 这个实例包括9个小组件 App.js 引入组件 Home.js 首页组件 User.js 用户管理组件 -  UserList.js 用 ...

  2. RPC框架学习+小Demo实例

    一.什么是RPC协议? 全称:远程过程调度协议 效果:使消费者向调用本地方法一样调用远程服务方法,对使用者透明 目前常用:Dubbo.Thirft.Sofa.... 功能: 建立远程通信(socket ...

  3. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  4. 一个上传图片,预览图片的小demo

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 模拟Hibernate框架的小demo

    该程序为尚学堂马士兵老师讲解,模拟了hibernate的原理,主要应用了字符串拼接,反射知识. step1,新建数据库 use jd; create table _student( _id int(1 ...

  6. Spring Boot 简单小Demo 转载!!!

    Spring Boot简介 接下来我们所有的Spring代码实例将会基于Spring Boot,因此我们先来了解一下Spring Boot这个大杀器. Spring早期使用XML配置的方式来配置Spr ...

  7. golang 文件传输小demo(转载)

    转载地址:https://www.cnblogs.com/qq702368956/p/10195497.html 获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先 ...

  8. 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

  9. 在线用户管理--ESFramework 4.0 进阶(05)

    无论我们采用何种通信框架来构建我们的分布式系统,在服务端进行用户管理都是非常重要的一个环节.然而用户管理是否应该隶属于通信框架了?这个并不一定,通常来说,用户管理是与具体应用紧密相关的,应该是由应用解 ...

随机推荐

  1. 如何查看 ThinkPHP5.1 的升级说明

    如何查看 ThinkPHP5.1 的升级说明 ThinkPHP 官方对于升级历史都有说明,这个官方做的非常不错. 在官方的手册中就有. 比如从 ThinkPHP 5.1.26 升级到 ThinkPHP ...

  2. Java多线程编程核心技术,第二章,对象和变量并发访问

    1,方法内部变量是线程安全的 2,实例变量非线程安全 3,synchronized是锁对象不是锁方法(锁对象是可以访问非synchronized方法,不可访问同个和其他synchronized方法 4 ...

  3. Mysql Workbench 连接CentOs MySQL

    系统环境: 计算机ip:192.168.1.105  CentOS+Mysql 远程计算机ip:192.168.1.118  Win7+MySQLWorkbench   登陆服务器:bin/mysql ...

  4. 2.运行成功的Demo(Python+Appium)

    1.打开Appium运行 2.在Pycharm输入代码如下所示: from appium import webdriver desired_caps = {} #初始化 desired_caps['p ...

  5. [C++ Primer] 第2章: 变量

    初始化与赋值 当对象在创建时获得了一个特定的值, 我们就说这个对象被初始化了. 在使用=号时, 如果创建了新的对象, 则为初始化而非赋值. 初始化不是赋值, 初始化的含义是创建变量时赋予其一个初始值, ...

  6. shell编写redis启动脚本

    ​ 安装后redis,默认系统不会自启动,如果关机或重启redis不会自行启动,linux下/etc/init.d/目录下基本上存放所有系统的大多数的启动脚本,放在这个目录下的脚本可以实现自启动操作. ...

  7. linux 使用中括号进行条件判断

       格式 “#”代表空格,不可缺少 [# param1#op# param2 #] 这种带比较操作符的形式,op左右必须使用空格隔开. 如 [# “3”==”2” #]  这种缺少空格的写法会得到结 ...

  8. scrollWidth,clientWidth,offsetWidth的区别 ---转载的

    转载自博客:http://www.cnblogs.com/kongxianghai/p/4192032.html 通过一个demo测试这三个属性的差别. 说明: scrollWidth:对象的实际内容 ...

  9. VueRouter

    使用VueRouter的前提: 1, 必须导入vue-router.js文件    2, 要有VueRouter()实例    3, 要把VueRouter实例挂载到Vue实例中 4, 路由的入口   ...

  10. tesseract-ocr训练方法

    tesseract-ocr有2和3两个版本,不同版本训练方法稍有不同. 第3版本的训练方法官版教程在这里:TrainingTesseract3 第2版的训练方法官版教程在这里:TrainingTess ...