一个用户管理的ci框架的小demo

一个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>

控制器,视图,模型的代码我都贴完了,希望对你有帮助!
第一次写CSDN,有点没有耐心~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,由于我是一个语言模型,不能进行代码编写。但是,我可以提供您一些有关ONNX演示程序的指导。 ONNX (Open Neural Network Exchange) 是一种开放的格式,用于存储人工神经网络模型。如果您想使用C语言编写ONNX演示程序,您需要下载ONNX的C语言库,并使用其API。 您可以从ONNX的官方网站下载C语言库,并阅读其文档,了解如何使用它的API。文档中通常有一些示例代码,您可以借鉴这些代码并编写自己的演示程序。 下面是一个简单的ONNX演示程序的例子: ``` #include <onnxruntime_c_api.h> #include <stdio.h> int main() { OrtEnv* env; OrtCreateEnv(ORT_LOGGING_LEVEL_WARNING, "test", &env); OrtSessionOptions* session_options; OrtCreateSessionOptions(&session_options); OrtSession* session; OrtCreateSession(env, "model.onnx", session_options, &session); OrtRunOptions* run_options; OrtCreateRunOptions(&run_options); float input[1 * 3 * 224 * 224]; for (int i = 0; i < 1 * 3 * 224 * 224; i++) { input[i] = i % 255; } OrtValue* input_tensor = OrtCreateTensorWithDataAsOrtValue(env, input, sizeof(input), ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT, {1, 3, 224, 224}, 4); OrtValue* output_tensor = NULL; OrtRun(session, run_options, &input_tensor, 1, &output_tensor, 1, NULL, 0); size_t output_tensor_size = OrtGetTensorDataLength(output_tensor); float* output = (float*)malloc(output_tensor_size); OrtGetTensorMutableData(output_tensor ### 回答2: C语言本身并不直接支持ONNX模型的加载和执行,但可以使用C语言与其他库或工具集成来实现ONNX模型的调用和演示。以下是一种可能的方法: 1. 首先,需要一个ONNX模型加载器和执行器。可以选择一些现有的开源库,如ONNX Runtime,LibTorch,TensorRT等。这些库提供C语言接口,使得我们可以在C语言中加载和执行ONNX模型。 2. 根据所选择的库的文档和示例,按照它们的方式引入相关的头文件和链接库。 3. 接下来,需要准备一个ONNX模型文件。可以在ONNX官方网站下载已经训练好的ONNX模型,或者根据自己的需求使用深度学习框架训练一个ONNX模型。 4. 编写C语言代码以加载和执行ONNX模型。具体的代码实现会根据所选择的库有所不同,但通常包括以下步骤: - 初始化ONNX运行时环境。 - 加载ONNX模型文件,并创建一个模型的执行器。 - 准备输入数据,将输入数据传递给ONNX模型。 - 执行ONNX模型,得到输出结果。 - 处理输出结果,进行相应的后续操作或输出。 请注意,具体的代码实现可能会更加复杂和详细,还可能涉及到模型的预处理和后处理,异常处理等等。 总结来说,虽然C语言本身不直接支持ONNX模型的加载和执行,但我们可以通过集成现有的开源库来实现ONNX模型的调用和演示。具体的实现方式和代码会依赖于所选择的库,但通常需要加载模型、准备输入数据、执行模型以及处理输出结果等步骤。 ### 回答3: ONNX(Open Neural Network Exchange)是一个开放的深度学习框架间模型交换标准。使用C语言编写一个ONNX的demo可以通过使用ONNX Runtime库来实现。下面是一个简单的C语言ONNX demo: ```c #include <stdio.h> #include <onnxruntime_c_api.h> int main() { OrtEnv* env; OrtCreateEnv(ORT_LOGGING_LEVEL_WARNING, "OrtEnv", &env); OrtSessionOptions* session_options; OrtCreateSessionOptions(&session_options); const char* model_path = "model.onnx"; OrtSession* session; OrtCreateSession(env, model_path, session_options, &session); size_t num_input_nodes; OrtGetInputCount(session, &num_input_nodes); const char* input_name = OrtGetInputName(session, 0, allocator); OrtTypeInfo* typeinfo; OrtGetInputTypeInfo(session, 0, &typeinfo); const OrtTensorTypeAndShapeInfo* tensor_info; OrtGetTensorTypeAndShape(typeinfo, &tensor_info); int64_t input_shape[4]; // 维度:[batch_size, channels, height, width] OrtGetDimensions(tensor_info, input_shape, 4); size_t input_tensor_size; OrtGetTensorShapeElementCount(tensor_info, &input_tensor_size); float* input_data = (float*)malloc(input_tensor_size * sizeof(float)); // 这里可以将输入数据赋值给input_data OrtAllocator* allocator; OrtGetAllocatorWithDefaultOptions(&allocator); OrtValue* input_tensor; OrtCreateTensorWithDataAsOrtValue(allocator, input_data, input_tensor_size * sizeof(float), input_shape, 4, ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT, &input_tensor); const char* output_name = OrtGetOutputName(session, 0, allocator); OrtValue* output_tensor; OrtRun(session, NULL, &input_name, &input_tensor, 1, &output_name, 1, &output_tensor); // 对输出进行处理 float* output_data = (float*)OrtGetTensorMutableData(output_tensor); size_t output_tensor_size; OrtGetTensorShapeElementCount(tensor_info, &output_tensor_size); // 这里可以对输出数据进行操作,例如打印输出结果 OrtReleaseValue(input_tensor); OrtReleaseValue(output_tensor); OrtReleaseTypeInfo(typeinfo); OrtReleaseSession(session); OrtReleaseSessionOptions(session_options); OrtReleaseEnv(env); free(input_data); return 0; } ``` 这个demo使用ONNX Runtime的C API来加载ONNX模型、获取输入和输出的名称、形状和类型信息,并执行模型推理。你可以根据实际情况修改输入和输出的数据,然后对输出结果进行处理。需要注意的是,你需要将`model.onnx`替换为你实际的ONNX模型文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值