一行的每两个输入保存在单独的数据库行中


Every two inputs of a row saved in a separate db row

我正在使用MySQLPHP CodeIgniter

我想实现这样的东西:

---------------------------------------
Skill name: Photoshop | Skill level: 4
---------------------------------------
---------------------------------------
Skill name: CSS | Skill level: 3
---------------------------------------
---------------------------------------
Skill name: CorelDraw| Skill level: 4
---------------------------------------

我可以轻松地将其打印在一页中。但是我需要它以这样的形式出现:

---------------------------------------
Skill name: [input] | Skill level: [input]
---------------------------------------
---------------------------------------
Skill name: [input] | Skill level: [input]
---------------------------------------
---------------------------------------
Skill name: [input] | Skill level: [input]
---------------------------------------

我对技能表database是这样的:

skill_id | user_id | skill_name | skill_level

我不知道如何将具有名称和级别的每行插入一个数据库行

你能帮我这个吗?

不确定这将如何与 CI 提供的任何形式/输入框架一起工作,但我通常会通过使用数组符号命名输入来做到这一点:

<label for="skill_0_name">Skill Name</label>
<input type="text" name="skill[0][name]" id="skill_0_name" />
<label for="skill_0_level">Skill Level</label>
<input type="text" name="skill[0][level]" id="skill_0_level" />
<label for="skill_1_name">Skill Name</label>
<input type="text" name="skill[1][name]" id="skill_1_name" />
<label for="skill_1_level">Skill Level</label>
<input type="text" name="skill[1][level]" id="skill_1_level" />

发布到 PHP 后,您会得到一个如下所示的数组 $_POST

array(
  'skill' => array(
    0 => array(
      'name' => 'name value for index 0'
      'level' => 'level value for index 0'
    ),
    1 => array(
      'name' => 'name value for index 1'
      'level' => 'level value for index 1'
    )
  )
)

您可以对输入字段使用 [] -表示法。我想你所有的技能都有id,这些id skill_id在数据库表中。因此,请尝试创建如下表单:

Skill name: <input type="text" name="skill[23]" /> | Skill level: <input type="text" name="skill_level[23]" />
Skill name: <input type="text" name="skill[25]" /> | Skill level: <input type="text" name="skill_level[25]" />
Skill name: <input type="text" name="skill[27]" /> | Skill level: <input type="text" name="skill_level[27]" />

在这里,23,25,27 是您的技能的 ID(例如),如果您使用数据库中的现有技能。对于新创建的技能,您可以使用@prodigitalson答案 0,1,2...索引。

接下来,您可以循环访问$_POST['skills']

foreach ($_POST['skill'] as $skill_id => $skill_name) {
    $skill_level = $_POST[skill_level][$skill_id];
    // do your insert here
}