0

下面的表格可以包含文本字段、下拉列表和选择框的不同元素,允许用户更新他的个人资料。更新 MySQL 字段的过程是在表单提交后完成的。

<form method="post">
My Name: <input name="myname" type="text" value="<?php echo $_SESSION['SESS_MY_NAME']; ?>" /><br />
My Email: <input name="email" type="text" value="<?php echo $_SESSION['SESS_EMAIL']; ?>" /><br />
    <input type="submit" name="Submit" value="Update" />

<?php
if (isset($_POST['Submit'])) {
    // MySQL update
    ;
    ;
    ;
    $result=mysql_query($sql);
  }

// if successfully updated, make form refresh. 
  if($result){
    ;
    ;
    ;
  }
?> 
</form>

我只想刷新表单,这样用户将留在同一页面并看到他所做的更改(即我需要在代码中的注释下放置什么“如果成功更新,请刷新表单”? )。

我不能使用header("location: samepage.php");,因为我在中间和之前有太多的 HTML 代码。

感谢任何帮助,

4

3 回答 3

2

isset($_POST['submit'])支票移到顶部。

您当前(预期)的流程如下:

  1. 从 DB/Session/etc 中检索表单数据。
  2. 显示为 HTML
  3. 用户提交表单
  4. 重复步骤 1/2
  5. 将数据写入数据库
  6. 强制刷新
  7. 再次重复 1/2

如果将此检查移到顶部,则该过程将更改为:

  1. 从数据库中检索表单数据
  2. 显示为 HTML
  3. 用户提交表单
  4. 将数据写入数据库
  5. 重复 1/2(它现在将检索更新的信息并正确显示)。

这是您可以做到的最简单的方法。它没有考虑发布/重定向/获取或更新会话,因此不需要多次读取数据库等。

于 2012-08-16T19:33:01.440 回答
0

为什么不使用 jQuery AJAX 提交并验证表单,然后在选择的 div 元素中输出结果。更多关于nettuts+的信息

于 2012-08-16T19:34:50.997 回答
0

很有帮助。多哇。

值得庆幸的是,经过一番激烈的谷歌搜索后,我能够自己解决这个问题,因为似乎没有其他人有答案。对于任何想要完成同样事情的人,您所要做的就是将以下代码添加到 CF7 表单配置的“附加设置”部分:

on_sent_ok: "位置 = ' http://domain.com/contact '; "

只需将 URL 替换为您的表单页面的 URL,然后提交表单时它会自动刷新回该页面!

于 2015-11-19T09:13:09.220 回答