+ -
当前位置:首页 → 问答吧 → 怎么实现 刷新提交完的表单 不再向数据库插入

怎么实现 刷新提交完的表单 不再向数据库插入

时间:2011-08-31

来源:互联网

大家好:

我做了一个考试程序,当学生回答完问题以后,给出分数,如果不及格学生还可以再考2次,但是刷新分数页面的时候,还会向数据库里面插入记录,这样的话 考生本身只有3次机会可能就是因为不小心刷新 而丧失了考试机会 有没有让用户提交完表单后 即使刷新页面也不插入记录的方法
我试了一下方法 都不可以
1:判断是否提交
isset()?...:... 不可以 因为刷新 默认是表单已经提交了

请大家 指点下

作者: wang_youyu   发布时间: 2011-08-31

提交插入数据库完毕弹出js 提示 然后跳转页面.
或者使用jquery/js ajax 来处理.

作者: PhpNewnew   发布时间: 2011-08-31

入库前去数据库里边查看一下,这个学生是否已经存在,如果存在直接 die();这样可以防止用户刷新啊!!

作者: iamyuxiang   发布时间: 2011-08-31

判断为空就不插入数据,或返回不就可有了吗?

作者: xiexie10o   发布时间: 2011-08-31

引用 1 楼 phpnewnew 的回复:

提交插入数据库完毕弹出js 提示 然后跳转页面.
或者使用jquery/js ajax 来处理.


js弹出成绩 感觉不是很正规 还是重新加载一个页面合适 至于ajax 本身不是很熟悉 所以没打算用

作者: wang_youyu   发布时间: 2011-08-31

引用 2 楼 iamyuxiang 的回复:

入库前去数据库里边查看一下,这个学生是否已经存在,如果存在直接 die();这样可以防止用户刷新啊!!


因为每个学生能考试3次 所以最多有3条记录

作者: wang_youyu   发布时间: 2011-08-31

引用 3 楼 xiexie10o 的回复:

判断为空就不插入数据,或返回不就可有了吗?


判断为空?你是说 表单文本框的值为空吗 不是的 你提交完表单后 再刷新 可以再提交的 而且表单是有值的 至于说返回 我也想到了 但是这个页面最好不好返回的好

作者: wang_youyu   发布时间: 2011-08-31

在提交页面设一个session变量值为yes,分数页进行if判断,将数据存入数据库后,再把变量设为no。

作者: zsaihz   发布时间: 2011-08-31

提交一次后禁用提交按钮。或者用onsubmit事件触发一个函数。

作者: jordan102   发布时间: 2011-08-31

引用 7 楼 zsaihz 的回复:

在提交页面设一个session变量值为yes,分数页进行if判断,将数据存入数据库后,再把变量设为no。


我把 显示分数的页面 和题目页面写在了 同一个页面 所以 如果在同一个页面设置2个session 第一个session 会被覆盖

作者: wang_youyu   发布时间: 2011-08-31