2010-05-28 75 views
0

我会试着用一个例子来说明一下:如何在物品尚未创建时设置物品的ID ..?

想象一下将产品添加到数据库(产品列表)的管理页面。当我打开ADD ITEM页面时,该项目还没有创建(直到我点击提交按钮),但是让我们说我想添加这个产品将出现的类别(例如使用AJAX)。当我运行AJAX脚本时,我需要告诉它哪个ID(我的产品)将这些类别放入...

我该怎么做。

在页面打开时,是否在数据库中插入一个空白项目(以获取mysql_insert_id)来完成此操作。它是否容易发生冲突或错误..?

恐怕这种技术将填充DB有很多空的产品,因为管理员重新加载页面,使页面提交前,等...

你们怎么办呢?

+0

'我需要告诉它哪个ID(我的产品)把这些类别放在...'不,你不需要它。插入产品后只需添加类别。有什么问题? – 2010-05-28 19:18:33

+0

任何需要知道数据库中的id的用户都是高级用户,他们应该明白最好在插入后才能得到id。添加完成后,您可以随意告诉他们:“对于您的记录,使用id $ id添加的条目” – corsiKa 2010-05-28 19:24:40

+0

我知道我可以将其作为2个步骤进行操作(添加项目 - 然后重定向到添加类别页面)。我只是尽量使用AJAX,当它是有道理的...我认为添加隐藏的输入可能是我最好的选择... – pnichols 2010-05-28 19:26:36

回答

1

当您通过JS添加类别时,不要回发到php脚本,而是将表单元素添加到页面的表单中。您可以添加名称为category_id[]的隐藏输入元素。这样,直到您实际提交项目表单之前,数据库中没有任何更改。然后,在项目控制器在PHP中,所有你需要做的是在添加项目后,添加类别...

1

我使用GUID作为我的ID这样的东西,你可以在任何系统上生成。 (但使用库!)

+0

我也使用GUID,并且不需要将它们显示给用户 – 2010-05-28 19:20:39

+0

@Rob Goodwin我从来没有真正地向他们展示唯一的ID,除非有必要。但是,我会为它们提供一个伪代码,用于查找速度等内容。但这只是一个可编入索引的字段。 – jcolebrand 2010-05-28 19:23:03

0

我会同意ircmaxell。在填写所有表单元素之前,您不应该发布到数据库。您可以使用ajax或其他任何方法来更改显示哪些表单元素,但是最好让所有数据库一次插入。

+0

我认为这是无稽之谈。如果数据库插入是有意义的,那么这样做会很好,否则你会失去一些东西。但是,我并不反对尽可能有效地对呼叫进行分组。数据库引擎比我们想象的要强大得多(确保它可能会超载,但是要将事情写得和应该的一样高效,并调整系统)。 – jcolebrand 2010-05-28 19:40:15

相关问题