【问题标题】:PHP help multi step formPHP帮助多步表单
【发布时间】:2010-10-04 13:25:15
【问题描述】:

我正在创建一个多步骤表单,我正在努力将 ID 传递给表单的每个步骤,下面是我的代码

    function add_career() {
    $data = array();
    $this->load->model('admin_model');
    $this->load->library('form_validation');

        if($this->input->post('career_set') == 'Save') {

            $this->form_validation->set_rules('career_name', 'Career name', 'required|min_length[3]');
            $this->form_validation->set_rules('career_desc', 'Career description', 'required|max_length[3000]');
            $this->form_validation->set_rules('useful_info', 'Useful Information', 'max_length[1000]');
            $this->form_validation->set_rules('useful_links', 'Useful Links', 'max_length[1000]');
            if ($this->form_validation->run() == FALSE) {
               $this->template->build('admin/add_career'); 
            } else {
               if($this->input->post('degree_needed')) {
                   $degree_needed = 'Yes';
               } else {
                   $degree_needed = 'No';
               }

               $this->load->model('careers');
               $insertCareer = $this->careers->save(
                 $this->input->post('career_name'),
                 $this->input->post('career_desc'),
                 $degree_needed,
                 $this->input->post('useful_info'),
                 $this->input->post('useful_links')
               );

                   //save the data in the session, so we can to it if need be


                $this->career_id = $this->db->insert_id;
                $this->session->set_userdata($insertCareer);
                //$this->firephp->log($this->session->userdata($this->career_id, 'Career ID'));        
               }
        }

        $this->career_id = $this->db->insert_id();
        if($this->input->post('salary_set') == 'Save') {

                $this->firephp->log($this->career_id);
                $this->form_validation->set_rules('basic_salary', 'Basic salary', 'required|max_length[12]');
                $this->form_validation->set_rules('trained_salary', 'Fully trained salary', 'required|max_length[12]');
                $this->form_validation->set_rules('progressed_salary', 'Progressing onto salary', 'required|max_length[12]');
                $this->form_validation->set_rules('average_salary', 'Average salary', 'required|max_length[12]');

                if ($this->form_validation->run() == FALSE) {
                        $this->template->build('admin/add_career'); 
                } else {
                    $this->load->model('salaries');
                    $insertSalary = $this->salaries->save(
                        $this->input->post('basic_salary'),
                        $this->input->post('trained_salary'),
                        $this->input->post('progressed_salary'),
                        $this->input->post('average_salary'),
                        $this->career_id
                    );

                $this->session->set_userdata($insertSalary);
                $this->firephp->log($insertSalary);    
                }
        }

        if($this->input->post('course_grades_set') == 'Save') {
            //first off we need to save the grade details

            $this->load->model('grades');
            $this->load->model('course');
            $this->firephp->log(count($_POST['grade_desc']));

            foreach ($_POST['grade_desc'] as $k => $v) {
                $this->firephp->log($v, 'Looped Results');
                $insertGrade = $this->grades->save($v, $this->session->userdata('career_id'));
                // theorertically we should be able to save the assicated course at the same time using $k
                $insertCourse = $this->course->save(
                    $_POST['course_type'][$k],
                    $_POST['course_names'][$k], 
                    $_POST['course_links'][$k],
                    $this->db->insert_id()
                );
                $this->firephp->log($insertGrade, $k);
                $this->firephp->log($insertCourse, $k);
            }
            //$insertGrades = $this->grades->save()
            //);
        }




   $this->template->build('admin/add_career', $data);
}

我需要从保存职业的部分获取最后插入的 id,并将其传递到保存工资详细信息的下一步,目前,我得到的只是一个空变量。我的变量是$this->career_id;

如果有人能解释我如何将最后插入的 id 放入表单的最后一部分。

非常感谢

【问题讨论】:

  • 我建议您将提供的代码仅提取到与您所问问题直接相关的部分。如果问题更清楚,您可能会得到更好或更快的答案。谢谢。

标签: php forms codeigniter post form-submit


【解决方案1】:

首先,我假设您使用 $this->db->insert_id 来检索数据库中最后插入的 id。您使用 2 个不同的调用来获取最后一个插入 ID。 第一个:

$this->career_id = $this->db->insert_id;

第二个:

$this->career_id = $this->db->insert_id();

我建议您在第二次通话时使用会话来检索 carrer id。

另外,save 方法返回什么(对于所有模型)?

【讨论】:

    【解决方案2】:

    我认为变量$this->db 在这个函数/类中不可用。

    如果您将$this->db->insert_id(); 的输出记录在careers 类中,函数save 中,那么您将获得正确的ID。我很确定这个功能可以在你的Model

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2018-03-15
      • 2016-08-19
      相关资源
      最近更新 更多