2014-12-04 43 views
0

我想送查詢數據庫,同時關閉瀏覽器我都試過這個腳本,但它沒有執行數據庫查詢,以更改列雕像的價值發送查詢數據庫,同時關閉瀏覽器

$(window).on("beforeunload", function() { 
    <?php 

    include('config/configuration.php'); 
    $uid=$_GET['id_p']; 
    $statue_pharmacie = mysql_query('update pharmacies set statue=0 where id="'.$uid.'"'); 



    ?> 
    return inFormOrLink ? "Do you really want to close?" : null; 


}); 
+0

不可能。 JS運行在客戶端上,PHP運行在服務器上。您的PHP代碼在生成頁面時運行,並且絕對不會在客戶端的js代碼中留下任何內容。您可以讓您的beforeunload向服務器發送ajax請求以嘗試執行此操作,但是由於瀏覽器關閉,因此不能保證有足夠的時間讓請求進入連線。 – 2014-12-04 15:42:45

+0

如上所述,我認爲你在混合使用PHP和javascript。看看[ajax](http://api.jquery.com/jquery.ajax/)並創建一個php文件來處理數據庫邏輯 – Last1Here 2014-12-04 15:43:38

+0

,因此在關閉瀏覽器= /時無法更新數據庫。 @MarcB – 2014-12-04 15:46:04

回答

1

這裏的一個基本的例子(假設你正在使用jQuery),但我會謹慎,因爲卸載事件通常有不同的瀏覽器支持:

的Javascript:

<script> 
// Grab ID for use later 
var data = <?php (isset($_GET['id_p']) ? (int) $_GET['id_p'] : 0); ?>; 

// On page unload 
$(window).unload(function() { 
    // Send data to script 
    $.post("ajax.php", function(data) { 
     // Handle return 
    }); 
}); 
</script> 

ajax.php

<?php 
// Make sure 0 wasn't passed 
if (!empty($_POST['data'])) { 
    // Run query 
} 

你可以閱讀有關AJAX這裏:http://api.jquery.com/jQuery.ajax/這裏的速記POST:http://api.jquery.com/jQuery.post/

另外,我想因爲它是過時從PHP的MySQL庫望而卻步。您應該使用PDO:http://php.net/manual/en/book.pdo.php

感謝,

安德魯

+0

你讓我的一天兄弟=) – 2014-12-04 17:50:39