刷新页面时出现问题

时间:2012-07-21 07:49:41

标签: php codeigniter session

我正在从我的数据库中检索一个列,并将这些值存储在我的控制器的数组中。 我将该数组传递给视图页面,并将该值显示给用户。 所有事情都可以正常工作。 但问题是,当我刷新页面时,它没有显示控制器从模型中获得的值,只显示空白页面.. \ 我也尝试将值存储在会话中并使用该值,但这似乎对我不起.. :( 这是我的控制器代码: -

function full_post_view(){
            $data= array(
                'ticket_id' => $this->input->post('ticket_id')
            ); 
            $this->session->set_userdata($data); 
            $ticket_id = ($this->input->post('ticket_id')) ? $this->input->post('ticket_id') : $this->session->userdata('ticket_id');
//                $post_content = $this->session->userdata('post_content');
            echo $ticket_id;
            $this->load->model('helpdesk_model');
            $all_comments = $this->helpdesk_model->fetchComments($ticket_id);
            $is_post_closed = $this->helpdesk_model->fetchPostStatus($ticket_id);
            if($all_comments->num_rows > 0)  {
                foreach ($all_comments->result() as $comments_value) {
                    $comments = $comments_value->comments;
                }
                $count=1;
                Template::set('all_comments',$all_comments);
                Template::set_view('helpdesk/full_post_view');
            }
            else {
                $count=0;
                Template::set('post_content',$this->input->post('post_content'));
            }                 
            Template::set('is_post_close',$is_post_closed);
            Template::set('ticket_id',$ticket_id);
            Template::set('is_post_closed',$is_post_closed);
            Template::set('post_content',$post_content);
            Template::set('count',$count);                
            Template::set('is_post_closed',$is_post_closed);                
            Template::render();
    }

这是我的观点: -

<?php $post=Template::get('post_content'); ?>
<?php  $ticket_id=Template::get('ticket_id'); ?>
<?php  $is_close = Template::get('is_close'); ?>
<h4>Your Problem :- </h4>
<?php echo $post; ?>
<hr/>
<?php foreach ($is_post_closed->result() as  $value) {
    $is_close = $value->is_close;
} ?>
<?php if(Template::get('count') > 0) : ?>
    <?php foreach($all_comments->result_array() as $commentsRow) : ?>
        <?php echo word_wrap($commentsRow['comments'],15); ?>
    <?php echo " by->"; ?>
    <?php echo $commentsRow['username']; ?>
    <?php echo $commentsRow['role_name']; ?>
    <hr/>
<?php endforeach; ?>
<?php else : ?>
    <br/>
    No Comments Yet
<?php endif; ?>
<?php if($is_close == 0 ) : ?>
    <?php echo form_open('helpdesk/newComment'); ?>
    <?php echo form_hidden('ticket_id',$ticket_id); ?>
    <?php  echo form_hidden('post_content', $post); ?>
    <?php echo form_textarea('comment_from_user'); ?>
    <?php echo form_submit('submit', 'Comment '); ?>
    <?php echo form_close(); ?>
<?php endif; ?>
<?php if($is_close==0) : ?>
<?php echo form_open('helpdesk/closePost'); ?>
<?php echo form_hidden('ticket_id', $ticket_id); ?>
<?php  echo form_hidden('post_content', $post); ?>  
<?php echo form_submit('submit','close post'); ?>
<?php echo form_close(); ?>
<?php else : ?>
<?php echo form_open('helpdesk/reopenPost'); ?>
<?php echo form_hidden('ticket_id', $ticket_id); ?>
<?php echo form_submit('submit','Reopen post'); ?>
<?php echo form_close(); ?>
<?php endif; ?>

修改: 我想问一下当用户刷新页面时如何再次将数据库内容加载到视图中。

编辑我的控制器并查看代码

2 个答案:

答案 0 :(得分:0)

刷新页面时,是否重新发送表单?我问这个是因为从你的控制器代码中看起来{_ 1}}是从_POST获取的,你使用这个变量传递给模型。如果您不重新发送表单,则$ticket_id$ticket_id,并且不会从数据库中提取任何内容。

编辑:

替换你的控制器:

null

with:

$ticket_id = $this->input->post('ticket_id'); 

并确保每个请求$ticket_id = ($this->input->post('ticket_id')) ? $this->input->post('ticket_id') : $this->session->userdata('ticket_id'); 至少存在两种​​可能性(POST和SESSION)

答案 1 :(得分:0)

解决了:) 问题是当我刷新页面时,ticket_id设置为0并且该值作为帖子传递。 所以会话值是新的ticket_id,即0,所以它什么也没显示.. 我这样做了: -

if(isset($_POST['ticket_id'])) {
$data= array(
'ticket_id' => $this->input->post('ticket_id'),
                'post_content' => $this->input->post('post_content')
             ); 
             $this->session->set_userdata($data); 
}
        $ticket_id =$this->session->userdata('ticket_id');
        $post_content =$this->session->userdata('post_content');

,即我在第一次发布时将ticket_id存储在会话中。下次未设置ticket_id帖子并从会话中获取数据时刷新页面。