0

我正在使用 Codeigniter 开发 CMS,它具有标题、帖子内容等常用字段(该页面在这种方式上类似于 Wordpress)。

我在页面上有一个图像上传器,它通过 ajax 将图像保存到 MySQL 表中,其中包含 image_id、路径、大小等基本字段。

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

我遇到的问题是 item_id 在页面被创建/保存之前是未知的。因此,如果用户转到 Create Post 页面并从那里上传图像,我无法添加关系,因为我还没有 item_id。

我正在考虑的一些事情:

  • 每次有人进入 Create Post 页面时,它会自动在 MySQL 表中创建一个只有 item_id 的空白帖子,并将其存储在隐藏字段中。我遇到的问题是,如果一个人只是单击创建帖子但从不填写,数据库可能会充满很多空帖子。

  • 将图像保存在图像表中,但还保存一个包含所有 ID 的数组,以供单击“创建”按钮时使用。单击该按钮时,然后添加图像关系。

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

Wordpress 似乎已经解决了这个问题,但我不确定它做了什么?

有人有更好的建议吗?

4

2 回答 2

2

我会说构建您的图像表,以便它不需要引用特定的帖子。将图像-帖子关系放在单独的表中。在您的“撰写帖子”屏幕上,让图片上传者返回新插入的图片的 ID,然后在您提交帖子时,将新的帖子 ID 和图片 ID 添加到表中以建立图片-帖子关系。这也使您可以更灵活地执行诸如链接到多个帖子中的一个图像之类的操作。

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

你是对的,如果有人上传图像然后关闭窗口而不发帖,这可能会导致孤立图像。不过,我不会担心图像表“填满”。MySQL 表可以有数百万行并且仍然表现良好。

如果您担心收集未使用的图像文件,如果上传日期早于 1 周,并且图像与任何帖子。

于 2012-07-17T15:44:18.910 回答
1

看起来很简单:

使用 1 个表格

收集发布的数据

插入文章 - 记录插入 id

插入图像 - 记录图像 id

使用 ids 插入关系表

编辑

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

于 2012-07-17T15:20:52.437 回答