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

时间:2014-12-15 20:42:45

标签: php mysql codeigniter

我正在使用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

我无法弄清楚如何将名称和级别的每一行插入一个数据库行

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

不确定这对于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'
    )
  )
)

答案 1 :(得分:0)

您可以对输入字段使用[] - 表示法。 我想你的所有技能都有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是你的技能的ids(例如),如果你使用数据库中的现有技能。 对于新创建的技能,您可以使用@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
}