因此,我正在尝试学习如何使用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
首先,CI是一个MVC框架,因此所有与数据库相关的事情都应该放在模型中。如果您尝试从控制器或视图访问数据库。这是架构的一个变种,不是从控制器访问数据库的好习惯。尝试创建单独的文件,例如
employee.php(html),所有html都将放在applciaiton / view文件夹中Employee.php(控制器),其中所有url方法都将命中,然后从那里调用model的适当方法。将进入applciaiton / controller文件夹
Employee_model(model),其中可以在数据库中插入更新和删除所有功能的模型都很好。
[我建议您观看一些教程以了解MVC的概念
将输入更改为输入,然后尝试
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");
}