尚未知道ID时保存到表

时间:2012-07-17 15:15:38

标签: php jquery mysql codeigniter

我正在使用Codeigniter中的CMS,它具有标题,帖子内容等常用字段(该页面与Wordpress类似)。

我在页面上有一个图像上传器,它通过ajax将图像保存到具有基本字段(如image_id,path,size)的MySQL表中。

还有另一个表存储项目与需要item_id和image_id的图像之间的关系。

我遇到的问题是在创建/保存页面之前不知道item_id。因此,如果用户进入“创建帖子”页面并从那里上传图像,我就无法添加关系,因为我还没有item_id。

我正在考虑的一些事情:

  • 每次有人进入“创建帖子”页面时,它会自动在MySQL表格中创建一个空白帖子,只包含item_id并将其存储在隐藏字段中。我遇到的问题是如果一个人只是点击“创建帖子”但是从未填写过,那么数据库可能会充满大量的空帖。

  • 将图像保存在images表中,但还会在单击“创建”按钮时保存所有ID的数组。单击该按钮后,再添加图像关系。

  • 隐藏图片上传器,直到填写帖子标题,这会触发页面保存

Wordpress似乎解决了这个问题,但我不确定它的作用是什么?

有人有更好的建议吗?

2 个答案:

答案 0 :(得分:2)

我想说构建你的图像表,这样它就不需要引用特定的帖子了。将图像 - 帖子关系放在单独的表中。在“撰写帖子”屏幕上,让图像上传器返回新插入图像的ID,当您提交帖子时,将新帖子ID和图像ID添加到表格中以获取图像 - 帖子关系。这也使您可以更灵活地处理多个帖子中的一个图像。

- 编辑重新阅读后,听起来这已经是您存储它们的方式了。如果是这样,那么应该没有问题。只需在提交帖子时添加图片 - 帖子关系即可。如果您担心孤儿图像,请参阅下文。 -

如果有人上传图片然后在不发帖的情况下关闭窗口,那么这可能会导致孤儿图像。不过,我不担心图像表“填满”。 MySQL表可以有数百万行,但仍然表现良好。

如果您担心收集未使用的图像文件,那么如果上传日期早于1周,并且图像不是'',那么您可以定期执行维护工作来删除图像文件(以及关联的表条目)。与任何帖子相关联。

答案 1 :(得分:1)

看起来很简单:

使用1表格

收集发布的数据

插入文章 - 记录插入ID

插入图片 - 记录图片ID

使用id插入关系表

修改

当您使用ajax上传图片时,您可以使用返回值将插入的图片ID加载到隐藏的表单字段中