2012-03-08 42 views
0

发送HTML表单数据,以两个独立的表在数据库中,我有这2个表:使用SQL和PHP

ornaments (ornament_id, ornament_name) 
ornament_to_size (ornament_id, size_id, ornament_type, colour, material, finish, height, width, weight, location, price, description, image_path) 

我想创建管理形式插入一个新的装饰项目到数据库中。这样做的最好方法是什么?我需要在两个表格中插入,这对我来说更加困难。饰品表中的ornament_id显然是PK,而ornament_to_size表中的PK是ornament_id和size_id作为组合键。

的原因还有一个装饰品尺寸表是因为装饰品可以有多种尺寸,像这样:

ornament_id = 3 & size_id = 1 
ornament_id = 3 & size_id = 2 
ornament_id = 3 & size_id = 3 

我只是想知道什么样的方法是不实际的代码

+0

有几种方法可以动态地将输入添加到表单,以便您可以通过单一提交表单来输入多个ornament_to_size行。 (或者如果你知道你只想提交3个ornament_to_size行,那么你可以为ornament_to_size行添加3个静态输入集。)现在我必须问:size_id是否真的是一个id?这意味着它是另一个表(也许命名大小)的ID? – ghbarratt 2012-03-08 08:08:58

+0

对不起,我要说我有一个尺寸表,每个尺寸的名称都对应于尺寸标识。而且,每个装饰品可以具有不同的尺寸,其具有不同的尺寸测量。因此,一件装饰品可以归类为“小”,另一件装饰品也可归类为其他装饰品 - 但它们可能具有不同的尺寸 – user1227124 2012-03-08 09:10:01

+0

好的,但方法基本上与我之前描述的相同:您将收集新装饰品的信息为以及相同形式的不同关联大小(可能会随着输入可以动态添加更多大小)。在服务器端,您将收集装饰品的信息,并首先插入这些信息,以便您可以获取刚刚插入的装饰品的ornament_id(可能使用['lastInsertId'](http://pt2.php.net/manual/en /pdo.lastinsertid.php)),您将需要插入装饰尺寸行。这是否回答这个问题? – ghbarratt 2012-03-08 09:29:31

回答

1

如果尺寸表中有已经得到了价值,你有两个选择,让用户插入数据:

  • 选择,如果你想要让用户添加一个新的价值

  • 复选框场,如果你想用户插入不止一个,
    记得把它命名为“checkboxname []”,使PHP可以使用它作为 数组。

在这两种情况下都使用大小的id作为值。 在数据库插入部分,你将不得不解析表单数据,然后执行:

  • 一个插入到装饰表,直接执行后 LastInsertId()查询(这是PDO的功能,但你可以把它在mysql ),并将结果保存在一个变种。
  • 使用 您保存为deco_id值的var执行后续查询到ornament_to_size表中。

请记住,如果你有选择使用复选框你可以运行带有$ _ POST [“checkboxname []”]插入所有的感谢到PHP如何阅读后新行一个foreach。

+0

感谢您的帮助伴侣。我有点得到它。我将不得不考虑它。 – user1227124 2012-03-08 10:08:27