从多步形式在相应的表中插入数据

时间:2013-03-13 06:30:11

标签: php codeigniter grocery-crud

我有一个名为“card”的多步形式

此表格必须包含一个人的所有信息,所做的人,人的工作,使用的工具等。

为了解决这个问题并使其更酷,我制作了一个多形式步骤表单,因此当用户完成第一个表的填充数据时(为了实现他使用的工具的信息),用户点击下一步按钮,然后从其他表输入显示(项目人员已经工作)......这一直持续到用户填写所有必要的数据。为了节省工作,我正在使用foodcrud。

<form method="post" action="<?php echo base_url();?>controller/save" name="form"/>
  <label>User Name</label>
  <input type="text" name="Username">   
  <input type="submit" value="Add"/>
  <!--#######################
       Several more data to store in distict tables
   #######################
   -->    
</form>   


in controller:

  function save
    {
      $arrData["Username"] = $this->input->post("Username");
      $this->User_model->Add($arrData); 
    } 


in User_model

function Add($arrData) { 
        if($this->db->insert(tableName, $arrData))
          return true;
        else
          return false;
    } 

当重定向到控制器时,如果我只填充一个表,那么一切都会有效。

问题是我不知道如何将相应的数据存储到其他涉及的表中。 因此,如果我在 tableName 中插入新注册表,则会分配新ID。现在我想使用这个最近分配的ID将其用作其他表中的其他必需字段(相关表将此ID作为外键)

如何解决这个问题有:

$last_id = $user->id;

所以我继续将数据插入到其他表中,

使用

是否有用
$crud->set_relation('column','table','column');

也许是一个回调者,有没有人做过像从一个表单插入多个相关表格的东西?

2 个答案:

答案 0 :(得分:1)

因此,如果我正确理解您,您需要在第一次插入后将userId保存到多个表中吗?这很简单,只需将id保存到会话中(如果此人登录到您的应用程序,您应该在登录时执行此操作)。

初始插入运行后,您可以调用:

$this->session->set_userdata('userId',$this->db->insert_id());

然后,只要您需要该ID,只需将其从会话中拉回来,例如。

$array = (
    'tool'=>'hammer',
    'userId'=>$this->session->userdata('userId')
);
$this->db->insert('tool_table',$array);

答案 1 :(得分:0)

首先,我建议您使用单个表来存储所有信息。但是因为它的多步操作因此您创建了几个表来存储它们,因为您将数据保存在块中。

这是一个快速的想法。

不是将数据存储到多个表中,而是将其保存在单个表中。当您插入第一个表单时,您将获得id并将此id存储在session / other_techniques中。在此之后,您可以使用更新查询将其余信息插入到同一个表中。

好处是,当您想要获取信息时,您不必进行连接和连接会降低查询速度。