我是 CodeIgniter 的新手,我正在构建一个简单的I / O网站。我只有一个数据库,比如test
,只有一个表results
,如下所示:
“结果”表格的屏幕截图
我有两个观看次数personal.php
和songs.php
。在第一个中,我收集要插入到字段2,3和4中的数据值,其余的值在第二个视图中收集。然后通过相关模型personal_model
和songs_model
将它们插入到表格中。
现在显然,它们将被插入到两个不同的行中,这不是我想要的。这里的诀窍是什么?我该如何管理它?到目前为止,我已经考虑过获取最后一个ID,但我不知道该怎么做。提前谢谢!
personal.php
(第一视图)
<?php echo validation_errors(); ?>
<?php echo form_open('data/personal'); ?> //passes the data to the controller that loads the personal_model.php
"some input fields"
<button type="submit" name="submit">Submit Data</button>
songs.php
(第二种观点)
<?php echo validation_errors(); ?>
<?php echo form_open('data/songs'); ?> //passes the data to the controller that loads the songs_model.php
"some input fields"
<button type="submit" name="submit">Submit Rating</button>
personal_model.php
(第一个模特)
<?php
class Personal_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function insert_personal()
{
$this->load->helper('url');
$data = array(
'age' => $this->input->post('user_age'),
'education' => $this->input->post('user_edu'),
'twitter' => $this->input->post('user_twitter'),
'facebook' => $this->input->post('user_facebook')
);
return $this->db->insert('results', $data);
}
}
songs_model.php
(第二个模特)
<?php
class Ratings_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function insert_ratings()
{
$this->load->helper('url');
#$this->load->database();
$data = array(
'score' => $this->input->post('rating'),
'song1' => $this->input->post('rnd1'),
'song2' => $this->input->post('rnd2')
);
return $this->db->insert('results', $data);
}
}
答案 0 :(得分:1)
你的控制器功能应该是这样的。
public function insert_personal()
{
$this->load->helper('url');
$data = array(
'age' => $this->input->post('user_age'),
'education' => $this->input->post('user_edu'),
'twitter' => $this->input->post('user_twitter'),
'facebook' => $this->input->post('user_facebook')
);
$this->db->insert('results', $data);
return $this->db->insert_id();
}
在上面的控制器函数中将最后插入的id设置为session,该函数应该从Personal_model返回。这是代码。
public function insert_ratings()
{
$data = array(
'score' => $this->input->post('rating'),
'song1' => $this->input->post('rnd1'),
'song2' => $this->input->post('rnd2')
);
$personalID = $this->session->userdata("personalID");
$this->db->where("id",$personalID);
$this->db->update('results', $data);
return $this->db->affected_rows();
}
然后更新insert_ratings函数中的现有行而不是insert record。这是代码。
{{1}}
然后在提交你的song.php格式时,没有新的记录会插入到表格中,它会更新现有的记录。