【问题标题】:insert data in corresponding tables from multistep form从多步表单中将数据插入相应的表中
【发布时间】:2023-03-13 00:00:02
【问题描述】:

我有一个叫做“卡片”的多步骤表单

此表格必须包含一个人的多项信息,该人做了什么,该人的工作,该人使用的工具等。

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

<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');

可能是回调或其他什么,有没有人做过类似从一个表单插入多个相关表的操作?

【问题讨论】:

    标签: php codeigniter grocery-crud


    【解决方案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);
    

    【讨论】:

    • 好吧,这真是个好主意,表之间的关系怎么样?
    • 不确定表之间的关系是什么意思?插入时,我假设您将通过 userId 关联表,因此您只需从会话中获取 userId 并将其添加到每个插入查询中。我是不是误会你的意思了?
    • 你说得对,只是想知道你的意见,但这是个好主意
    【解决方案2】:

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

    这里有一个快速的想法。

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

    这样做的好处是,当您想要获取信息时,您不必进行联接,而联接确实会减慢查询速度。

    【讨论】:

    • 我这样做是因为关系模型,如果我只使用一张表,事情会非常难看,至少看起来
    • 为什么要保存在一张表中?我不想在 1 个表中有 50 列。
    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2013-06-21
    相关资源
    最近更新 更多