我正在使用Codeigniter中的CMS,它具有标题,帖子内容等常用字段(该页面与Wordpress类似)。
我在页面上有一个图像上传器,它通过ajax将图像保存到具有基本字段(如image_id,path,size)的MySQL表中。
还有另一个表存储项目与需要item_id和image_id的图像之间的关系。
我遇到的问题是在创建/保存页面之前不知道item_id。因此,如果用户进入“创建帖子”页面并从那里上传图像,我就无法添加关系,因为我还没有item_id。
我正在考虑的一些事情:
每次有人进入“创建帖子”页面时,它会自动在MySQL表格中创建一个空白帖子,只包含item_id并将其存储在隐藏字段中。我遇到的问题是如果一个人只是点击“创建帖子”但是从未填写过,那么数据库可能会充满大量的空帖。
将图像保存在images表中,但还会在单击“创建”按钮时保存所有ID的数组。单击该按钮后,再添加图像关系。
隐藏图片上传器,直到填写帖子标题,这会触发页面保存
Wordpress似乎解决了这个问题,但我不确定它的作用是什么?
有人有更好的建议吗?
答案 0 :(得分:2)
我想说构建你的图像表,这样它就不需要引用特定的帖子了。将图像 - 帖子关系放在单独的表中。在“撰写帖子”屏幕上,让图像上传器返回新插入图像的ID,当您提交帖子时,将新帖子ID和图像ID添加到表格中以获取图像 - 帖子关系。这也使您可以更灵活地处理多个帖子中的一个图像。
- 编辑重新阅读后,听起来这已经是您存储它们的方式了。如果是这样,那么应该没有问题。只需在提交帖子时添加图片 - 帖子关系即可。如果您担心孤儿图像,请参阅下文。 -
如果有人上传图片然后在不发帖的情况下关闭窗口,那么这可能会导致孤儿图像。不过,我不担心图像表“填满”。 MySQL表可以有数百万行,但仍然表现良好。
如果您担心收集未使用的图像文件,那么如果上传日期早于1周,并且图像不是'',那么您可以定期执行维护工作来删除图像文件(以及关联的表条目)。与任何帖子相关联。
答案 1 :(得分:1)
看起来很简单:
使用1表格
收集发布的数据
插入文章 - 记录插入ID
插入图片 - 记录图片ID
使用id插入关系表
修改
当您使用ajax上传图片时,您可以使用返回值将插入的图片ID加载到隐藏的表单字段中