![](/img/trans.png)
[英]Codeigniter - Update email only if the email doesn't exist in the database
[英]codeigniter doesn't update the database
我正在尝试使用表单中的数据更新数据库,表单中填充了daatabase中的数据。 但是,当我单击提交时它给出了错误。 有人可以帮忙吗?
我的控制器:
public function update()
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Update a product';
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('price', 'Price', 'required');
$this->form_validation->set_rules('description', 'Description', 'required');
$this->form_validation->set_rules('publisher', 'Publisher', 'required');
$this->form_validation->set_rules('engine', 'Engine', 'required');
$this->form_validation->set_rules('release_date', 'Release date', 'required');
$this->form_validation->set_rules('platform', 'Platform', 'required');
$this->form_validation->set_rules('genre', 'Genre', 'required');
$this->form_validation->set_rules('picture', 'Picure', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header2', $data);
$this->load->view('admin/update', $data);
$this->load->view('templates/footer2');
}
else
{
$this->admin_model->update_products();
$this->load->view('admin/success');
}
}
function input($id = 0)
{
$this->load->helper('form');
$this->load->helper('html');
if($this->input->post('mysubmit'))
{
$this->admin_model->update_products();
}
else
{
$this->admin_model->set_products();
}
if((int)$id > 0)
{
$query = $this->admin_model->get($id);
$data['id']['value'] = $query['id'];
$data['title']['value'] = $query['title'];
$data['price']['value'] = $query['price'];
$data['description']['value'] = $query['description'];
$data['publisher']['value'] = $query['publisher'];
$data['engine']['value'] = $query['engine'];
$data['release_date']['value'] = $query['release_date'];
$data['platform']['value'] = $query['platform'];
$data['genre']['value'] = $query['genre'];
$data['picture']['value'] = $query['picture'];
}
$this->load->view('admin/update',$data);
}
我的模特:
function get($id){
$this->load->database();
$query = $this->db->get_where('products',array('id'=>$id));
return $query->row_array();
}
function update_products($data){
$this->load->helper('url');
$data = array(
'id' => $this->input->post('id'),
'title' => $this->input->post('title'),
'price' => $this->input->post('price'),
'description' => $this->input->post('description'),
'publisher' => $this->input->post('publisher'),
'engine' => $this->input->post('engine'),
'release_date' => $this->input->post('release_date'),
'platform' => $this->input->post('platform'),
'genre' => $this->input->post('genre'),
'picture' => $this->input->post('picture')
);
$this->db->where('id',$id);
$this->db->update('products',$data);
}
我的观点:
<h2>Create a new product</h2>
<?php echo validation_errors(); ?>
<?php echo form_open('admin/update') ?>
<input type="hidden" value=<?php echo '"' . $id['value'] . '"' ?>>
<label for="title">Title</label>
<input type="text" name="title" value=<?php echo '"' . $title['value'] . '"' ?>><br><br>
<label for="price">Price</label>
<input type="number" step="any" name="price" value=<?php echo '"' . $price['value'] . '"' ?>><br><br>
<label for="description">Description</label>
<textarea name="description"><?php echo '"' . $description['value'] . '"' ?></textarea><br><br>
<label for="publisher">Publisher</label>
<input type="text" name="publisher" value=<?php echo '"' . $publisher['value'] . '"' ?>><br><br>
<label for="engine">Engine</label>
<input type="text" name="engine" value=<?php echo '"' . $engine['value'] . '"' ?>><br><br>
<label for="release_date">Release date</label>
<input type="date" name="release_date" value=<?php echo '"' . $release_date['value'] . '"' ?>><br><br>
<label for="platform">Platform</label>
<input type="text" name="platform" value=<?php echo '"' . $platform['value'] . '"' ?>><br><br>
<label for="genre">Genre</label>
<input type="text" name="genre" value=<?php echo '"' . $genre['value'] . '"' ?>><br><br>
<label for="picture">Picture</label>
<input type="text" name="picture" value=<?php echo '"' . $picture['value'] . '"' ?>><br><br>
<input type="submit" name="mysubmit" value="submit">
提交后的结果:
创建一个新产品
遇到PHP错误
严重程度:注意
消息:未定义的变量:id
文件名:admin / update.php
行号:7
“”>标题
遇到PHP错误
严重程度:警告
消息:非法字符串偏移量“值”
文件名:admin / update.php
行号:10
“ U“>
价钱
遇到PHP错误
严重程度:注意
消息:未定义的变量:价格
文件名:admin / update.php
行号:13
“”>
描述
发行人
遇到PHP错误
严重程度:注意
消息:未定义的变量:发布者
文件名:admin / update.php
行号:19
“”>
发动机
遇到PHP错误
严重程度:注意
消息:未定义的变量:引擎
文件名:admin / update.php
行号:22
“”>
发布日期
遇到PHP错误
严重程度:注意
消息:未定义的变量:release_date
文件名:admin / update.php
行号:25
“”>
平台
遇到PHP错误
严重程度:注意
消息:未定义的变量:平台
文件名:admin / update.php
行号:28
“”>
类型
遇到PHP错误
严重程度:注意
消息:未定义的变量:体裁
文件名:admin / update.php
行号:31
“”>
图片
遇到PHP错误
严重程度:注意
消息:未定义的变量:图片
文件名:admin / update.php
行号:34
“”>
您的代码中有很多问题/错误,但是我将尝试标记并修复所有问题/错误。 开始吧...
在以下行之后的input($id = 0)
方法中:
$query = $this->admin_model->get($id);
你有这样的代码:
$data['id']['value'] = $query['id'];
将它们全部更改为:
$data['id'] = $query['id'];
$data['title'] = $query['title'];
// more...
从所有它们中删除['value']
。 然后在您的view
您将具有以下变量(数组):
$id['value']
$title['value']
从其中删除['value']
,然后对每个变量/字段使用$title
等。 然后在您的视图中再次对此进行更改:
<?php echo form_open('admin/update') ?>
对此:
<?php echo form_open('admin/update/' . $id) ?>
还要删除<input type="hidden" value=<?php echo '"' . $id['value'] . '"' ?>>
,最后在update_products
方法中,将其更改为:
function update_products($id)
{
//...
}
从$data
数组中的update_products
方法; 删除此:
'id' => $this->input->post('id'),
希望这会起作用,但是您遇到了很多错误,因此不确定我是否可以将它们全部标记出来。尝试一下。
更新:您正在从update
调用update_products
,因此您应该将id
传递给update
方法,以便进行更改,并添加$id
参数:
public function update($Id)
{
//...
}
然后在您要调用update_products
方法的此方法中,将$id
传递给它,如下所示:
$this->admin_model->update_products($id);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.