Web上临时保存草稿功能,数据库这块一般怎么实现的?
要求是用户不管填了什么,都把JSP页面中用户填写的内容当成草稿保存下来。
由于数据库那里有很多限制,比如只能数字,或者不能为空,或者长度限制。
所以不能把数据存在原来一样的table里。
并且要求草稿可以有多个,可以在以后的查询里找到继续填写。
现在考虑再建一个DB,(由于有很多种草稿,即很多种页面都需要草稿保存功能,所以没有在同一个库建很多类似的表,
而直接建个库)把table not null都去掉,都存文本。
问题是,我看很多blog也有草稿功能,当然也许他们的要求是填正确了才能存草稿。
我想问,这种需求一般怎么实现?? 如果没有固定模式,大家也可以帮我想想办法。
(其实我觉得这也许是个数据库的问题,但不知道放在哪个板块。。。)
ldh911有空看看吗??
------解决方案--------------------我遇到的都是一两条草稿数据,就是直接要求填写正确的数据后才能存草稿,not null的栏位一定要填写才能存
------解决方案--------------------
很有意思的问题。
我们也有存草稿的问题,而且也应该是随时随地;而且是复杂表单(超级复杂),但是一般没有RichText。
不过我们的做法不见得通用,因为我们把任何表单数据都处理为XML结构,提交或暂存(草稿)时都是先将页面数据封装为XML数据结构(或者理解为字符串也行),然后再将整个字符串以Ajax方式POST给服务器端。
再次查询出来的时候,界面也是用Ajax向服务器请求XML数据报文,然后服务器从数据库中直接把XML查询出来,界面再将XML映射回各控件。
我们的复杂表单会有20张以上主副表单组成,近2000个单元格需要填写,且表格之间存在逻辑自动计算和对照校验关系,所以不太好切分成N个页面去填写(用户要经常在表单之间切换),此外必然需要随时能暂存。
供参考~~~
------解决方案--------------------如果用户没有值的话那你就给他赋予默认值不就好了呢?然后草稿其实就是一个状态嘛。比如0是未审核,1是审核,2是草稿之类的状态,
当然到最后的话,你可以放个ajax到页面上,然后定时保存下也好嘛。哈哈
------解决方案--------------------
觉得一般还是用文件的形式保存,不直接存在数据库中。
上面说到用xml保存,如果页面多了输入框,也没有问题吧,保存草稿是保存最后一次的数据并覆盖掉原来的。
------解决方案--------------------
------解决方案--------------------
1. 建一张表,字段为标题,内容,创建时间。
2. 通过ajax实现自动保存。
Java code
<script language="javascript">
var saveReq = false;
//保存 草稿
function autoSave(){
var title=document.getElementById("title").value;
var content=document.getElementById("content").value;
if(title!="") { //当文章标题不为空时
var url = "saveDraft.jsp";
var param = "title="+title+"&content="+content;
//调用编写的Ajax请求方法
saveReq = httpRequest("post",url,true,callbackFunc_save,param);
}
}
//回调函数
function callbackFunc_save(){
if(saveReq.readyState == 4){
if(saveReq.status == 200){
document.getElementById("sysTip").innerHTML = saveReq.responseText;
}
}
}
var selectReq = false;
function selectArticle(){
var url = "getDraft.jsp";
var param = "nocache="+new Date().getTime();
selectReq = httpRequest("get",url,true,callbackFunc_select,param);
}
function callbackFunc_select(){
if(selectReq.readyState == 4){
if(selectReq.status == 200){
document.getElementById("draftBox").innerHTML = selectReq.responseText;
}
}
}
var delay=1000*60*5; //定义延迟时间,这里为5分钟
timer=window.setInterval(autoSave,10000); //每隔5分钟保存一次草稿
timer=window.setInterval(selectArticle,delay); //每隔5分钟保存一次草稿
</script>
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
标记,日后肯定用的着,谢楼主