使用不同的型号/页面插入一行 - CodeIgniter

时间:2016-12-25 20:09:28

标签: php mysql codeigniter

我是 CodeIgniter 的新手,我正在构建一个简单的I / O网站。我只有一个数据库,比如test,只有一个表results,如下所示:

“结果”表格的屏幕截图

enter image description here

我有两个观看次数personal.phpsongs.php。在第一个中,我收集要插入到字段2,3和4中的数据值,其余的值在第二个视图中收集。然后通过相关模型personal_modelsongs_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);     
    }
}

1 个答案:

答案 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格式时,没有新的记录会插入到表格中,它会更新现有的记录。