2014-02-18 40 views
1

我知道插入数据的正确方法是使用AJAX,但我不介意页面是否刷新。页面刷新后,任何人都可以帮我清除表单数据吗?一切正常,数据正在提交到表格,并刷新页面。但是,如果我再次点击刷新按钮,它会告诉我数据将被提交......并且我不知道该怎么做。提交和页面刷新后清除表单 - Wordpress

<?php 

    $current_user = wp_get_current_user(); 

    if ($current_user->ID == 0) { 

    } else { 

     if(isset($_POST['drop_artists'])) { 
      $answer = $_POST['drop_artists']; 
     }else{ 
      $answer = $_POST['artist_name']; 
     } 

     $date = current_time('mysql'); 

      $table = "t4t5_answers"; 
      $sql = $wpdb->prepare("INSERT INTO $table (user_id, post_id, info, answer, submission_date) VALUES (%d, %d, %s, %s, %d)", $current_user->ID, $post->ID, 'artist', $answer, $date); 
      $wpdb->query($sql); 

      header('Location: ' . get_bloginfo('url')); 

}//if(isset($_POST['form_sub'])) 

?> 

<form method="post" action="" id="artists-form"> 
<ul> 
    <li id="categories"> 
     <?php 
     $args = array(
      'show_option_all' => 'Artists', 
      'hierarchical' => 1, 
      'child_of' => 406, 
      'order_by' => 'name', 
      'name' => 'answer', 
      'hide_empty' => 0 
     ); 
     wp_dropdown_categories($args); ?> 
    </li> 
</ul> 
<input type="text" name="artist_name" value="" size="45" id="input-title"/> 
<input id="submitButton" class="subput" type="submit" name="submit" value="Add"/> 
</form> 

回答

0

页面发布后,使用重定向将te用户发送到成功页面。这将使实际发布的页面不会出现在他们的历史记录中。

if (!empty($_POST)) { 
    // do stuff 
    header("Location: $_SERVER[PHP_SELF]"); 
} 

请注意重定向的URL应该是完整的URL,而不是相对的URL。但实际上,我还没有看到任何浏览器对相对URL有任何问题。

+0

我想要显示同一页面。如果我得到原始网址并添加它而不是success.php?这会起作用吗? – Ciprian

+0

当然。重定向将导致浏览器执行GET而不是POST。 – miken32

+0

尝试过......同样的事情。我编辑了我的问题。 – Ciprian

0

要立即重定向到您目前的网址,试试这个

echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$current_URL.'">' 

详细内容见http://en.wikipedia.org/wiki/Meta_refresh

+0

该代码表明他正在使用Wordpress,因此可能无法更改HTML标头。我认为,也使用这种方法,将POST页面留在浏览器历史记录中。 – miken32

0

里面写你的PHP代码,如果(isset($ _ POST [ '提交']),并添加下面的INSERT语句下面的脚本

echo " <script type='text/javascript'> 
    window.location=document.location.href; 
</script>"; 

你的代码如下所示:

global $wpdb,$post; 
if(isset($_POST['submit'])) 
{ 
    $current_user = wp_get_current_user(); 

    if ($current_user->ID == 0) 
    { 

    } 
    else 
    { 

     if(isset($_POST['drop_artists'])) 
     { 
      $answer = $_POST['drop_artists']; 
     } 
     else 
     { 
      $answer = $_POST['artist_name']; 
     } 

     $date = current_time('mysql'); 

     $table = "t4t5_answers"; 
     $sql = $wpdb->prepare("INSERT INTO $table (user_id, post_id, info, answer, submission_date) VALUES (%d, %d, %s, %s, %d)", $current_user->ID, $post->ID, 'artist', $answer, $date); 
     $wpdb->query($sql); 

} 

echo "<script type='text/javascript'> 
     window.location=document.location.href; 
     </script>"; 
} 

?> 

<form method="post" action="" id="artists-form"> 
<ul> 
    <li id="categories"> 
     <?php 
      $args = array(
       'show_option_all' => 'Artists', 
       'hierarchical' => 1, 
       'child_of' => 406, 
       'order_by' => 'name', 
       'name' => 'answer', 
       'hide_empty' => 0 
     ); 
     wp_dropdown_categories($args); ?> 
    </li> 
</ul> 
<input type="text" name="artist_name" value="" size="45" id="input-title"/> 
<input id="submitButton" class="subput" type="submit" name="submit" value="Add"/> 
</form> 

这将刷新您的页面后表单提交和表单值不会被重新提交。