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保存,如果页面多了输入框,也没有问题吧,保存草稿是保存最后一次的数据并覆盖掉原来的。
[解决办法]
<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>
[解决办法]