我正在尝试更新数据库的记录。
以下是代码:
在我的索引页面上。
<?php foreach ($news as $news_item): ?>
<h2><?php echo $news_item['title'] ?></h2>
<div class="main">
<?php echo $news_item['text'] ?>
</div>
<p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>
<p><a href="news/delete/<?php echo $news_item['slug'] ?>">Delete article</a></p>
<p><a href="news/update/<?php echo $news_item['slug'] ?>">Update article</a></p>
在我的update.php页面上。
<h2>Update a news 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="text">Text</label>
<textarea name="text"></textarea><br />
<input type="submit" name="submit" value="Update news item" />
</form>
在我的news.php页面上。
public function update($slug)
{
$this->load->helper('url');
$this->news_model->update_news($slug);
redirect ('news', 'refresh');
}
在我的news_model.php页面上。
public function update_news($slug)
{
$this->load->helper('url');
$data = array(
'title' => $title,
'slug' => $slug,
'text' => $this->input->post('text')
);
$this->db->where('title', $slug);
$this->db->update('news', $data);
}
我的路由页面。
$route['news/update/(:any)'] = 'news/update/$1';
$route['news/delete/(:any)'] = 'news/delete/$1';
$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
我试图更新用户点击的记录。
但是,代码不会将slug发送到更新页面,而更新页面上有更新记录的表单,代码会一直运行并将记录更新为&#34; 0&#34;值。
答案 0 :(得分:0)
修改强>
经过几点评论后,我现在可以看到你的问题。这就是我要解决的问题;
您的索引文件似乎很好。它是您的更新功能,在您的控制器中,问题出在哪里。您希望看到更新表单,但您实际上并没有加载视图;
尝试使用此功能替换该功能;
public function update($slug)
{
if (!$this->input->post('submit'))
{
// The form was NOT posted
// So we load the view
$data['selected_article'] = $this->news_model->get_by_slug($slug);
$this->load->view('update', $data);
}
else
{
// The form was submitted
$data = array(
'title' => $this->input->post('title'),
'slug' => $this->input->post('slug'),
'text' => $this->input->post('text'),
);
$this->news_model->update_news($slug, $data);
}
}
答案 1 :(得分:0)
不应该这样:
$data = array(
'title' => $title,
'slug' => $slug,
'text' => $this->input->post('text')
);
是这样的:
$data = array(
'title' => $this->input->post('title'), //-->post variable
'slug' => $slug,
'text' => $this->input->post('text')
);
此外,您确定$title
变量与$slug
完全相同吗?
如果$title
=&#39;我的标题&#39;和$slug
=&#39;我的标题&#39;,则他们不会匹配,这不会运行正如所料:
$this->db->where('title', $slug);
答案 2 :(得分:0)
我在表单模型文件中添加了一个函数,在那里我只想更新以前在db中上传的一些记录:
public function update_records($id_aUsar){
$data = array(
'asunto' => $this->input->post('tema'),
'remite' => $this->input->post('emite'),
'mensaje' => $this->input->post('content'),
'dirigido' => $this->input->post('paraGrupo'),
'fechaEnvio'=> $this->input->post('fechaEnvio'),
'observaciones' => $this->input->post('notas')
);
$this->db->where('id_masivos', $id_aUsar);
$this->db->set('fecha', 'NOW()', FALSE);
$this->db->update('masivos_texto', $data);
}
其中$id_aUsar
是我要更新的行的主键ID,我从会话值中获取id,以便保持相同的会话(我的主键id_masivos是类型AUTOINCREMENT),数组在用户更新某些字段(包括所有字段)之后,条目是唯一要更新的数据,但只有我在函数中显示的字段对于记录更新至关重要。然后在我的控制器中,我访问我的模型添加功能,如下所示:
$this->forma_model->update_records($id_tarea);
其中$id_tarea
是该会话中该用户的当前会话ID,这是我如何在不丢失主键ID的情况下更新记录。