Reaksmey
Reaksmey

Reputation: 205

codeigniter how do i pass Value after update done and redirect to Index()

how do i pass TRUE / FALSE after update done and redirect to Index() and set

condition $viewdata['show'] to append my html sucess or something

My Controller

class Description extends CI_Controller {

    public function index()
    {
        $viewdata['content']=$this->General_model->get_page_uri();

        $viewdata['show']=; //where i want to get value when update() method 
                            //pass value so i can show sucess / error message

        $this->load->view("backend/content_view",$viewdata);
    }
    public function update()
    {
        $title=$this->input->post('txttitle');
        if($title != '')
        {
            if(!$this->update_model->update_all($title))
            {
                return FALSE; 
            }

            return TRUE;
        }
        redirect('Admin/Description');
    }

}

My Model

public function update_all($data)
    {
        $this->db->set('desc',$data)
            ->where('desc_id','1');
        if(!$this->db->update('tbl_desc'))
        {
            return FALSE;
        }

        return TRUE;

    }

@Ritesh d joshi thz it work but i face problem that i can't modify when update error i test to change my field name to other to test return false;

Admin/Description/update

it show me 'A Database Error Occurred' by Codeigniter

i don't want this to show i want to keep my Admin page still same just alert nomol message error that i have set not to show many info error. how could i prevent this or this can be done by Ajax request only ?

Controller index()

    if($show_ses === '0')
            {
                 $viewdata_result = $this->General_model->rk_alert_ok('Successfully Update');
                 $this->session->set_flashdata('show', 'false');

            }elseif($show_ses === '1'){

                 $viewdata_result=$this->General_model->rk_alert_no('Fail Update Request');
                 $this->session->set_flashdata('show', '');
            }

Controller update()

    if(!$this->update_model->update_all($title))
    {

        $this->session->set_flashdata('show', '1');
        //1= false
    }else{
        $this->session->set_flashdata('show', '0');
        //0=true
    }

Upvotes: 0

Views: 434

Answers (4)

Rax Weber
Rax Weber

Reputation: 3780

Use the PHP header() function.

header('Location: your_URL');

Update:

In CI, you can use redirect() function, this document will help you to understand: http://www.codeigniter.com/user_guide/helpers/url_helper.html

Upvotes: 2

Aman Garg
Aman Garg

Reputation: 3290

You can use the Header function, and to detect it you can pass the parameters too in the GET Url like below.

By default set the status as FALSE. ANd you can update the status according to your conditions either to FALSE or TRUE.

public function update()
        {
            $status = false;
            $title=$this->input->post('txttitle');
            if($title != '')
            {
                if(!$this->update_model->update_all($title))
                {   
                    $status = FALSE;
                    return FALSE; 
                }
                $this->session->set_flashdata('show', 'true');
                 $status = TRUE;
                return TRUE;

            }
            header('Location: abc.php?status='.$status);
        }

Hope This will work, Do let me know in case of any confusion.

Upvotes: 1

devpro
devpro

Reputation: 16117

You can use redirection in update() as:

public function update()
{
    $title = $this->input->post('txttitle');
    if($title != '')
    {
      $status = $this->update_model->update_all($title);        
      if($status){
        redirect(base_url().'index?show=1');
      }
      else{
        redirect(base_url().'index?show=0'); 
      }
    }
    redirect('Admin/Description');
}

than you can check the status in index() as:

public function index()
{
    $viewdata['content']=$this->General_model->get_page_uri();
    if(isset($this->input->post('show')) && intval($this->input->post('show')) == 0){
      $viewdata['show'] = 1; // if success than show 1
    }
    else{
      $viewdata['show'] = 0; // if error than show 0
    }                   
    $this->load->view("backend/content_view",$viewdata);
}

Upvotes: 1

Ritesh d joshi
Ritesh d joshi

Reputation: 823

Please try this

 class Description extends CI_Controller {

        public function index()
        {
            $viewdata['content']=$this->General_model->get_page_uri();

           $show= $this->session->flashdata('show');

        if($show){
               // Here is code for show  and message
              $viewdata['show']="message";
              $this->session->set_flashdata('show', 'false');
         }  


            $this->load->view("backend/content_view",$viewdata);
        }
        public function update()
        {
            $title=$this->input->post('txttitle');
            if($title != '')
            {
                if(!$this->update_model->update_all($title))
                {
                    return FALSE; 
                }
                $this->session->set_flashdata('show', 'true');

                return TRUE;
            }
            redirect('Admin/Description');
        }

    }

Upvotes: 1

Related Questions