RT。
现在要设计一个数据库,就拿现在提问的这个设计来阐述。
假如我要提出一个问题,在TEXTAERE中写一段文字,在文字中还要插入图片和引用等,这个表如何设计?
当前的想法:
1.提问的文字部分为一张表。
2.提问的贴图(上传图片)部分为一张表。
3.提问的引用部分为一张表。
假如数据库是这样设计的,那么我怎么知道在文字的哪一个段落,或者切入点,插入(关联)这张图片或引用呢?还望指教。谢谢
[b]问题补充:[/b]
HTML编辑器?如果用现成的我就不用过来提问啦,呵呵。
谢谢1楼的回答,能否给我明确点的说明,比如说TEXTAERE中是将文本与HTML的代码分别保存在两张表里,然后图片用上传的形式保存是吗?
看来是我没有描述清楚,现在我把我的想法更具体的说明一下:
1、关于textarea里放的具体是什么?那里存放的是html代码。(代码里有文本、图片、链接)。
2、我们需要保存什么?我们只需要保存textarea里的html代码。
3、html代码里的图片呢?我们在textarea里编辑html的同时,图片上传到服务器的一个指定目录(用html文本编辑器编辑文本及上传图片)。
4、上传到服务器上的图片怎么管理?需要在数据库里记录图片的相关信息,方便日后管理。
5、怎么管理?数据库里建2张表,1张存储html代码,另1张存储图片信息(具体字段的定义你自己考虑)。假设,1表为存储html的表,有主键id。2表为图片信息表,将2表的外键与1表主键相关联(不关联也可以,反正要在2表中体现每一条图片信息是属于哪条html文本信息的就可以)。当你删除html表中的某条信息时,与之相关联的图片信息也要删除,这时你需要通过你的程序,根据图片信息到指定的路径下删除相应的图片(意思就是你删除了整个html代码,代码中所引用到的图片需要被删除,如果不删除,储存图片的文件夹会越来越大,造成不必要的冗余)。
6、有什么弊端?有弊端。当你修改时,被替换掉的图片还是存储在服务器上,同时信息也记录在图片信息表中。但冗余出的图片不会很多。这些冗余的信息只有在你删除html表中的信息时才会关联到(参考5)。
7、有什么优点?有优点。图片不通过大字段的方式保存到数据库中,可以减轻数据库的压力,图片保存在服务器特定路径下方便人为管理。使用html编辑器,可以控制文本的样式,如:字体大小、字体颜色、字形等。图片在html编辑器下也可以控制其长宽、缩放比例、翻转等等。
就这么多。希望你不要局限于我所说的。条条大路通罗马,解决问题的方式有很多。多多思考。另外,我给你的这个解决方案很简陋,要考虑的细节有很多,大体给你一个提纲,剩下的要你自己解决。
完!
TEXTAERE中建议使用html编辑器,图片建议不要保存在数据库中,所有上传的图片都保存在一个固定的文件夹中,很多编辑器都集成了这个功能。数据库里相关的表只要一个字段即可,即:存储html代码。
当然这种方式是不考虑分页的情况。
如果要做的再细一些:
数据库中的要有2张表。1张为html代码信息,表中的每一条记录就是一个文本,要有主键id。第2张表为图片信息表,与1表中的文本id相关联。即,指定每张图片的信息属于哪条文本信息。
使用文本编辑器上传文本中图片的同时,在2表中同时记录保存的图片信息(名称、路径等)。当文本修改或删除的时候,根据相关联的图片信息到指定的路径下将图片删除。
可以参考的html文本编辑器:fckeditor、ewebeditor。可以去搜索“html在线文本编辑器”。编辑器有很多,javaeye的月刊里也有介绍,好像是4月份的。
一个字段搞定,存储HTML ,图片就是 超级链接信息。不用保存文件!
你不用研究别的,就研究研究这个论坛发帖的控件就行。
你看你每点一个按钮,下面都有帮助信息,比如Img:
插入图像: [img]http://image_url/img
其实都是文本,只是对[]标签的解析。
也就是说,在数据库字段里面,就存成正常的字符串就行。然后还需要建立一个所有标签的定义表,对每个支持的标签进行维护。然后在前台,针对每个标签进行处理替换就行了。