0

我有一个相当普遍的问题。我有一个小表格

    <form action="<?=base_url();?>ticket/close_ticket/<?=$ticket_details['id'];?>" method="post" id="close_ticket" name="close_ticket">
        <ul>
            <li><label for="frm_status">Status<span class="req">*</span></label>
                <span class="input">                        
                    <select id="frm_status" name="status" onchange="this.form.submit()">
                            <option value="<? if ($ticket_details['status'] == "Open") $status= "1"; else $status= "2"; echo $status;?>"><? if ($ticket_details['status'] == "Open") $status= "Open"; else $status= "Closed"; echo $status;?></option>
                            <option value="<? if ($ticket_details['status'] == "Open") $status= "2"; else $status= "1"; echo $status;?>"><? if ($ticket_details['status'] == "Open") $status= "Closed"; else $status= "Open"; echo $status;?></option>                  
                    </select>
                </span>
            </li>
        </ul>
     </form>

此表单包含下拉列表选项框,在更改时将表单提交给关闭工单控制器......

      public function close_ticket()
  {
    $this->load->model('ticket_model');
    $ticket_id = mysql_real_escape_string($this->uri->segment(3));

    if($_POST)
    {
        //save ticket
        unset ($_POST['id']);
        $_POST['id'] = $ticket_id;
        $this->ticket_model->close_ticket($_POST);

        redirect(base_url().'ticket/edit/'.$ticket_id.'/');
        return;

    }
    redirect(base_url().'ticket/edit/'.$ticket_id.'/');
  }

它确实如此。这个控制器就是将信息发布到模型来更新SQL.....

    public function close_ticket($ticket_post)
{
$query = $this->db->query("SELECT id FROM ".$this->tables_ticket." WHERE id = '".mysql_real_escape_string($ticket_post['id'])."';");

if($query->num_rows() > 0)
        {
        $row = $query->row();
        $query = $this->db->query("UPDATE ".$this->tables_ticket."
                                    SET
                                    status = '".mysql_real_escape_string($ticket_post['status'])."'
                                    WHERE
                                    id = '".mysql_real_escape_string($ticket_post['id'])."'
                                    ");
        }
    if($this->db->affected_rows() > 0) return true;
    else return false;
}

然后在这一切之后,重定向回表单。我假设在重定向时,表单将使用更新的数据填充下拉列表。这就是我苦苦挣扎的地方,因为它发送了更改的数据,并且在某处它没有注册更改并返回页面,没有改变。问题,这是否适用于确认/辅助提交页面,然后是重定向,我是否试图在失败的同一函数中返回更改的数据?

    $body_data['ticket_list']       = $this->ticket_model->list_ticket();
    $body_data['ticket_details']    = $this->ticket_model->get_ticket($ticket_id);
    $body_data['ticket_summary']    = $this->ticket_model->list_ticket_summary($ticket_id);
    $body_data['customer_list']     = $this->ticket_model->get_customer_details($ticket_id);
    $body_data['precan_list']       = $this->ticket_model->list_messages();
    $body_data['users_list']        = $this->ticket_model->list_users();

    $foot_data['accordian_active'] = 5;

    $this->load->view('head',$head_data);
    $this->load->view('sidebar/service',$head_data);
    $this->load->view('ticket/edit',$body_data);
    $this->load->view('foot',$foot_data);
    return;

编辑函数只返回一系列人口查询列表。除非我需要一个新的查询来重新填充ticket_details 列表?

4

0 回答 0