我在CI 2.1中更新时遇到了一些问题 我按照用户指南“mini-tut”创建了电子新闻,但我不明白如何使用表单更新记录。
我的更新模型是:
// update dei record
public function update_news($id)
{
$data = array(
'title' => $this->input->post('title'),
'slug' => $this->input->post('slug'),
'text' => $this->input->post('text')
);
$this->db->where('id', $id);
$this->db->update('news', $data);
}
如何让控制器进行更新?我试着:
public function update($id)
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Update an intem';
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('text', 'text', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('news/update');
$this->load->view('templates/footer');
}
else
{
$this->news_model->update_news($id);
$this->load->view('news/success');
}
}
但是我显示了404()页面......
更新的观点是:
<h2>Update an item</h2>
<?php echo validation_errors(); ?>
<?php echo form_open('news/update') ?>
<label for="title">Title</label>
<input type="input" name="title" /><br />
<label for="slug">Slug</label>
<input type="input" name="slug" /><br />
<label for="text">Text</label>
<textarea name="text"></textarea><br />
<input type="submit" name="submit" value="Update an item" />
</form>
任何人都可以帮助我如何更新“simnple”来理解CI逻辑?
答案 0 :(得分:1)
如果我理解你想要什么,那么你应该将$ this-&gt; input-&gt; post(x)传递给控制器中的模型。 我个人一直在使用它:
控制器:
$data = array(
'title' => $this->input->post('title'),
'text' => $this->input->post('text'),
'slug' => $this->input->post('slug'),
);
if($this->my_model->exists($id)) {
$this->my_model->update($id, $data);
} else {
$this->my_model->insert($data);
}
您的模型应该如下所示:
// update dei record
public function update($id, $data)
{
$this->db->where('id', $id);
$this->db->update('news', $data);
}
您的控制器使用第一个段作为控制器方法的参数:
public function update($id)
您也可以尝试使用
$id = $this->uri->segment(3);
答案 1 :(得分:0)
//控制器 公共功能更新($ id) { $这 - &GT;负载&GT;辅助( '形式'); $这 - &GT;负载&GT;库( 'form_validation');
$data['title'] = 'Update an intem';
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('text', 'text', 'required');
$data['news'] = $this->news_model->get_news_by_id($id);
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('news/update', $data);
$this->load->view('templates/footer');
}
else
{
$this->load->helper('url');
$this->news_model->update_news($id);
redirect('/news', 'refresh');
}
}
//模型 public function update_news($ id) {
$data = array(
'title' => $this->input->post('title'),
'slug' => $this->input->post('title'),
'text' => $this->input->post('text')
);
$this->db->where('id', $id);
$this->db->update('news', $data);
}
查看
<label for="title">Title</label>
<input type="input" name="title" value="<?php echo $news[0]['title'];?>" /><br />
<input type = "hidden" name="id" value="<?php echo $news[0]['id'];?>" />
<label for="text">Text</label>
<textarea name="text"><?php echo $news[0]['text'];?></textarea><br />
<input type="submit" name="submit" value="Create news item" />
答案 2 :(得分:-1)
在代码点火器中添加页面
我会给你一个我做过的例子
型号:
function add()
{
$name=$_POST['name'];
$department=$_POST['dept'];
$degree=$_POST['degree'];
$mark=$_POST['mark'];
$this->db->query("INSERT INTO `simple`(name,department,degree,mark) VALUES('$name','$department','$degree','$mark')");
}
控制器:
public function add()
{
$this->load->model('modd');
$this->modd->add();
$this->load->view('add');
}
观点:
add.php
<form method="post" action="<?php base_url();?>index.php/contr/add">
<table>
<?php echo form_open('contr/add');?>
<tr>
<th>Name</th>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<th>Department</th>
<td><input type="text" name="dept" /></td>
</tr>
<tr>
<th>Degree</th>
<td><input type="text" name="degree" /></td>
</tr>
<tr>
<th>Marks</th>
<td><input type="text" name="mark" /></td>
</tr>
<tr>
<td><input type="submit" name="add" value="Add" /></td>
<?php echo form_close(); ?>
<td>
<a href="<?php echo base_url(); ?>index.php/contr/view"><input type="button" value="view" /></a>
</td>
</tr>
</table>