欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

这个页面总是出现这个问题怎么回事?

程序员文章站 2022-06-12 13:58:41
...
这个页面就是类似贴吧的从帖子列表点进去后某个帖子的主页 回复是提交到本页的 遇到下面两个问题了 大家帮我看看谢谢
form表单








下面是插入语句
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stnt=$pdo->prepare("insert into reply(reid,name,content)values(:reid,:name,:content)");
$stnt->execute($_POST);
这两个代码都是写在一个页面的 页面出现两个问题 我提交表单后这个输入框里面的东西可以插入到数据库中 然后表单就会清空 但是我点击刷新页面后总是有一个提示框 就是下面这个图片的内容 如果我点击继续后刚才已经提交的数据就会再插入一遍到数据库中 而且我换别的浏览器刷新页面也是提示这个框 这是第一个问题


第二个问题是从帖子列表点击进这个帖子后就显示报错了 因为上面这个代码还没有往数据库里面插入数据呢 没有产生POST的值 如果插入数据后这个报错就消失了 但是每次点进帖子还是会报错啊 因为是提交到本页的回复所以没有写action 但是我还是试着这样写了一个if判断 但是不对啊 不报错了但是提交数据后也插入不到数据库里面了 这个问题该怎么解决呢
if(isset($_GET['reid'])
{
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stnt=$pdo->prepare("insert into reply(reid,name,content)values(:reid,:name,:content)");
$stnt->execute($_POST);
}


回复讨论(解决方案)

1.刷新页面的时候会把$_POST里面的内容也带上。所以刷新等于一次重复的表单提
2.判断应该是判断$_POST['reid'],而不是$_GET

1.刷新页面的时候会把$_POST里面的内容也带上。所以刷新等于一次重复的表单提
2.判断应该是判断$_POST['reid'],而不是$_GET


第二个问题我改了一下 已经没问题了 那么第一个问题怎么解决呢?

第一个问题可以通过这个方法解决:

将真正的处理数据部分放到一个单独的文件中进行,处理完毕redirect回显示页面。

第一个问题可以通过这个方法解决:

将真正的处理数据部分放到一个单独的文件中进行,处理完毕redirect回显示页面。



你是说把插入的数据的代码的那一段另写一个文件是吗 插入完成后再跳转回来 是这样的吧 但是跳转回来的那个地址了的POST值怎么办呢 你再看一下我昨天提问的另一个帖子
http://bbs.csdn.net/topics/391903553 这个代码比较完整 我上面的代码这样就是为了省略那个提交的post值所以才提交到本页的 但是现在又要改回回去 那个post值怎么办呢?

“那个POST值”是什么意思?你需要在插入数据成功之后,回到的页面再次显示这些数值?如果是这样,我建议你回到先前页面的时候带一个该记录的ID,然后用数据库查询的方式把这个纪录拿回来,再把字段赋值给表单。