CodeIgniter的新手,我不知道如何编辑数据库

问题描述 投票:0回答:2

因此,我正在尝试学习如何使用CI,而想要我学习CI的人说,没有控制者和观点的模型,使用CI就更容易。我正在尝试从数据库中编辑一行。这是我的控制器代码

public function index() {
    $alimente = $this->db->query('select alimente.id, alimente.name FROM alimente order by name asc')->result();
    $totalQuery = $this->db->query("select count(id) as total from alimente")->result();

    $nrcrt = 1;
    foreach ($alimente as $a) {
        $a->nrcrt = $nrcrt++;
    }
    $content = $this->parser->parse('alimente/list_alimente', array("ALIMENTE" => $alimente, "COUNT" => $totalQuery), true);
    $TITLE = " Lista Alimente";
    $array = array('TITLE' => $TITLE, 'CONTENT' => $content);
    $this->parser->parse('TEST', $array, false);

}

public function add() {
    $add_aliment = $this->parser->parse('alimente/add_aliment', array(), true);
    $TITLE = "Adauga alimente";
    $array = array('TITLE' => $TITLE, 'CONTENT' => $add_aliment);
    $this->parser->parse('TEST', $array, false);
}

public function add_done() {
    $name = $this->input->post('name');
    $data = array(
        'name' => $name,
    );

    $this->db->insert('alimente', $data);

    redirect("alimente");
}

public function edit($id) {
    $alimente = $this->db->query('select alimente.id, alimente.name FROM alimente  WHERE id = "' . $id . '" order by name desc')->result();
    $content = $this->parser->parse('alimente/edit_alimente', array("ALIMENTE" => $alimente), true);
    $TITLE = "Modifica";
    $array = array('TITLE' => $TITLE, 'CONTENT' => $content);
    $this->parser->parse('TEST', $array, false);
}

public function edit_done() {
    $name  = $this->imput->post("name");
    $id  = $this->imput->post("id");

    $query = $this->db->prepare("update alimente set name = '".$name."' where id = '".$id."'")->result();
    $query->execute($name, $id);

    redirect("alimente");
}

这是我的意见文件

<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
    <h1 class="h2">Modifica alimente</h1>
</div>

<form method="post" action="{SITE_URL}/alimente/edit_done">

    <div class="form-group">

        {ALIMENTE}    
        <label> Id aliment</label>
        <input type="text" name="id" value= " {id} " class="form-control" />
        <label> Nume aliment</label>
        <input type="text" name="name" value= " {name} " class="form-control" />
        <br>
        {/ALIMENTE}
    </div>

    <input type="submit" value="Modifica" name="name" class="btn btn-primary" />

</form>

任何帮助都将是非常有用的,如果代码太糟糕了,我感到抱歉,我刚刚开始学习编程三个月

编辑:我忘了输入我得到的错误

遇到PHP错误,严重性:通知

消息:未定义的属性:Alimente :: $ imput

文件名:controllers / Alimente.php

行号:49

回溯:

文件:C:\ xampp \ htdocs \ CodeIgnite \ application \ controllers \ Alimente.php行:49函数:_error_handler

文件:C:\ xampp \ htdocs \ CodeIgnite \ index.php行:315功能:require_once

遇到未捕获的异常,类型:错误

消息:对成员函数post()的调用为null

文件名:C:\ xampp \ htdocs \ CodeIgnite \ application \ controllers \ Alimente.php

行号:49

回溯:

文件:C:\ xampp \ htdocs \ CodeIgnite \ index.php行:315功能:require_once

php sql forms codeigniter edit
2个回答
0
投票

首先,CI是一个MVC框架,因此所有与数据库相关的事情都应该放在模型中。如果您尝试从控制器或视图访问数据库。这是架构的一个变种,不是从控制器访问数据库的好习惯。尝试创建单独的文件,例如

employee.php(html),所有html都将放在applciaiton / view文件夹中Employee.php(控制器),其中所有url方法都将命中,然后从那里调用model的适当方法。将进入applciaiton / controller文件夹

Employee_model(model),其中可以在数据库中插入更新和删除所有功能的模型都很好。

[我建议您观看一些教程以了解MVC的概念


0
投票

输入更改为输入,然后尝试

public function edit_done() {
$name  = $this->input->post("name");
$id  = $this->input->post("id");

$query = $this->db->prepare("update alimente set name = '".$name."' where id = '".$id."'")->result();
$query->execute($name, $id);

redirect("alimente");

}

© www.soinside.com 2019 - 2024. All rights reserved.