Multi step/page form in PHP & CodeIgniter

后端 未结 5 1394
青春惊慌失措
青春惊慌失措 2020-12-20 07:45

I\'m trying to build a multi step/page form in PHP and CodeIgniter and I was wondering if any of you could help me.

How can I have a multi step form in CI that updat

5条回答
  •  攒了一身酷
    2020-12-20 07:49

    I have a model to store my wizard data with a variable for each field on the form:

    class Class_signup_data extends CI_Model {
    const table_name="signups_in_progress";
    public $market_segment; // there is a field named 'market_segment' in the wizard view
    

    ... ...

    I have one controller to handle the whole process, with parameters for the session_id and the stage of the process we are at:

        class Signup extends CI_Controller {
        public function in_progress($session_id=NULL,$stage=1) {
            $this->index($session_id,$stage);
        }
        public function index($session_id=NULL,$stage=1) {
        if ($session_id===NULL) $session_id=$this->session->userdata('session_id');
    ...
    ...
    

    In this controller I have a switch for which stage we are at - it looks for a 'Prev' button first:

    switch ($stage) {
            case 2:
                if ($this->input->post('prev')) { // if they click Previuous, the validations DON'T need to be met:
                    $signup_data->save_to_db(array_merge(array('ip'=>$_SERVER['REMOTE_ADDR'],'session_id'=>$session_id,'signup_stage' => '1',
                        'signup_complete' =>'0'),$this->input->post()),$this->db,$session_id);
                    $this->load->helper('url');
                    redirect("/signup/in_progress/".$session_id."/1");
    

    And later in the switch I use CI's Validations to display a form and process 'Next' if it was clicked or it is just being called with /signup/in_progress/session/2:

        $this->form_validation->set_rules("your rules");
    if ($this->form_validation->run() == FALSE) {
        $this->load->view('signupStage2',array('signup_data'=>$signup_data));
    } else {
        $signup_data->save(array_merge(array('ip'=>$_SERVER['REMOTE_ADDR'],'session_id'=>$session_id,'signup_stage' => '3',
        'signup_complete' =>'0'),$this->input->post()),$this->db,$session_id);
        $this->load->helper('url');
        redirect("/signup/in_progress/".$session_id."/3");
    };
    

    At the bottom of each view (eg 'signupStage2.php') I have the prev and next buttons:

        

提交回复
热议问题