2012-08-16 161 views
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代码太多。

得到任何帮助,

+2

你的意思是你想提交表单而不发送新的HTTP头,从而强制页面加载?这就是所谓的AJAX。关于它的SO有很多重复的问题。 – Matt 2012-08-16 19:32:19

+1

是的,你需要使用JavaScript来完成你描述的目标。 PHP本身不会削减它。 – 2012-08-16 19:33:00

+0

[PHP的可能重复。如何动态地改变页面内容的HTML选择动作?](http://stackoverflow.com/questions/11398113/php-how-dynamically-change-page-content-on-html-select-action) – Matt 2012-08-16 19:34:16

回答

2

移动isset($_POST['submit'])检查到顶部。

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

  1. 从DB /会话/等检索表单数据。
  2. 显示为HTML
  3. 用户提交表单
  4. 重复1/2
  5. 写入数据的步骤,以DB
  6. 强行刷新
  7. 重复1/2再次

如果这个移动检查顶部,过程更改为:

  1. 从DB检索表单数据
  2. 显示为HTML
  3. 用户提交形式
  4. 写数据输出到DB
  5. 重复1/2(它现在将检索更新的信息和正确地显示)。

这是绝对最简单的方法,你可以做到这一点。它不考虑Post/Redirect/Get或更新会话,所以多个数据库读取都是无用数据等。

0

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

0

这样的帮助。太棒了。

谢天谢地,经过一番激烈的Google搜索之后,我能够自己解决这个问题,因为没有其他人似乎有答案。对于任何人都希望实现同样的事情,你需要做的就是将下面的代码添加到您的CF7形式配置的“其他设置”部分:

on_sent_ok:“位置=‘http://domain.com/contact’;

只需将URL替换为表单页面的URL,然后自动刷新表单即可提交到该页面!