2014-02-18 59 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> 

這將刷新您的頁面後表單提交和表單值不會被重新提交。