2016-11-26 78 views
0

下面的代碼可以正常工作,因爲它可以正確更新數據庫。然而,在帖子完成後,頁面上的數據是舊的,即使它是由SELECT查詢驅動的,$reader_busy[0]也不會更新。PHP舊數據在POST後仍然顯示

要強制$reader_busy[0]在用戶屏幕上正確更新,需要進行刷新。這意味着頁面在帖子後重新加載,然後刷新。

如何讓頁面顯示來自mysql的正確數據而無需加載頁面兩次?

我的PHP代碼版本簡化:

<?php 
$reader_key = 'jm2'; 
$reader_busy_query = "SELECT `BusyWithClient` " . 
        "FROM {$wpdb->prefix}assistant " . 
        "WHERE `Key`='" . $reader_key . "'"; 

$reader_busy = $wpdb->get_col($wpdb->prepare($reader_busy_query)); 
$busy_with_client = $reader_busy[0];  

if(isset($_POST['toggle'])){ 
    $result = $wpdb->update(
     $wpdb->prefix . 'assistant', 
     array('BusyWithClient' => $busy_with_client), 
     array('Key' => $reader_key)     
    ); 

    // I want to remove/replace this line, and still see updated data. 
    echo "<meta http-equiv='refresh' content='0; url=" . curPageURL() . "#instructions" . "'>";   
} 
?> 

<h1> 
    <?php print_r('busy: ' . $reader_busy[0]); ?> 
<h1> 

<form method="post" action="<?php echo curPageURL() . '#instructions'; ?>"> 
    <input type="submit" name="toggle" value="toggle" > 
</form> 
+0

附註:您沒有正確使用準備好的語句。按照[示例](https://developer.wordpress.org/reference/classes/wpdb/prepare/#description)並使用佔位符。 – Mikey

+0

現在你在Select之後設置$ read_key,它應該在它之前。另外Mikey是正確的,使用準備好的sql語句。 – Kainax

回答

0

只需掀開你如何做事的順序答案。取而代之的是檢索然後更新,在檢索之前更新。

<?php 
if (isset($_POST['toggle'])) { 
    $result = $wpdb->update(
     $wpdb->prefix . 'assistant', 
     array('BusyWithClient' => $busy_with_client), 
     array('Key' => $reader_key)     
    ); 
} 

$reader_busy_query = "SELECT `BusyWithClient` " . 
        "FROM {$wpdb->prefix}assistant " . 
        "WHERE `Key`='" . $reader_key . "'"; 

$reader_busy = $wpdb->get_col($wpdb->prepare($reader_busy_query)); 
?> 
+0

我在SELECT操作之前移動了if語句,但仍然得到相同的行爲。 –

+0

這沒有任何意義。你確定你正在更新嗎?在更新之後打印出'$ result'的值 - 看看它給出了什麼值。 – Mikey

+0

我確定更新能夠正常工作。 –

0

我看你是想什麼來完成,這就是看起來不可能的。您可以(應該)通過刷新頁面數據來創建Ajax請求並更新頁面,而不是刷新頁面。

編輯:

因爲,你想發佈到錨頁面,並有自然的瀏覽器將試圖找到網頁上的信息,而無需刷新它。瀏覽器仍然發送信息發佈,所以它在後臺更新,但不刷新頁面。

您應該通過ajax請求發送數據並將數據返回給字段,或者將其發佈到另一個php文件(不帶#hashtag)。

PS - 你不會得到更多的應答者,如果你將降級每一個不爲你工作:)

+0

你能解釋一下爲什麼它不可能嗎? –

+0

我增加了更多解釋 – Kainax

+0

我沒有downvote anyones答案。 –

相關問題