设置查询结果数组的闪存数据并访问/显示视图中的所有数据

时间:2018-04-04 19:24:06

标签: php codeigniter

我正在尝试传递用户评论,当用户点击创建评论表单上的提交按钮时,他们已发布到要显示的帖子中。但是如果没有刷新页面(也会复制评论),评论就不会显示出来。这就是为什么我试图使用重定向来实现这一点,我发现很难。

目前在我的控制器中我有以下代码..

stars

我在我的视图中显示了这些数据,所有方法都可以使用以下方法....

...

$query = 'SELECT * FROM thread where id='.$id;
$data['thread'] = $this->db->query($query)->result_array();

$query2 = 'SELECT username FROM newUsers where id='.$userid;
$data ['username'] = $this->db->query($query2)->result_array();

$query3 = 'SELECT id FROM newUsers where id='.$userid;
$data ['userid'] = $this->db->query($query3)->result_array();

$query4 = 'SELECT * FROM comments where thread_id='.$id;
$data['comment'] = $this->db->query($query4)->result_array();

我遇到的问题是页面加载时没有出现评论..我知道我必须使用以下

$this->load->view('header', $data);
$this->load->view('discussion/create');
$this->load->view('footer');

在我的控制器/方法中,我有以下方法

redirect('postComment/post','refresh');

我目前正试图用闪存数据传递这些数据,我不确定它是否是最佳方式..我正在使用以下代码...

$this->load->view('header');
$this->load->view('discussion/create');
$this->load->view('footer2');

在视图中,我尝试按以下方式设置数据..

$this->session->set_flashdata('thread', $data['thread']);
$this->session->set_flashdata('username', $data['username']);
$this->session->set_flashdata('userid', $data['userid']);
$this->session->set_flashdata('comment', $data['comment']);

要显示我正在使用以下数据..

$data['thread'] = $this->session->flashdata('thread');
$data['comment'] = $this->session->flashdata('comment');
$data['username'] = $this->session->flashdata('username');
$data['userid'] = $this->session->flashdata('userid');

我得到多个未定义的变量和为foreach()提供的无效参数..对我的问题的任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

Flashdata仅适用于临时事项,仅适用于页面刷新一次。您可以使用set_userdata()并将变量设置为常规会话变量,然后在完成后可以取消设置。

但是我认为通过会话变量调查为什么这样做是谨慎的,而不是动态获取数据库行。随着数据库表变大,这最终会出现问题。