2012-08-02 76 views
0

我想使聯機/脫機狀態,我做了一個表user_status,我想添加在標題SQL查詢,所以每次用戶加載一個頁面時,表格將被更新時間;每當頁面加載時更新sql表格

user_status表是:user_id | last_activity_time; user_id來自表users;

我在標題中加入這樣的:

//check update last_time_active 
$date = date("Y-m-d H:i:s"); 

$query = mysql_query("update user_status SET last_activity_time=$date "); 
?> 

如何我還添加用戶?如果他已登錄,請檢查他的user_id並使用user_idlast_activity_time更新表格?這是對的嗎?

之後,我想在特定頁面中添加用戶名旁邊的文本(在線/離線)。

謝謝大家!

+2

不要依賴於PHP的時間。取而代之的是設置'last_activity_time = NOW()' – Matt 2012-08-02 13:52:47

+0

另外,你應該從'$ _SESSION'變量中提取'user_id'。 – Matt 2012-08-02 13:53:20

+0

有效點,我會爲時間做的事情,謝謝 – Abude 2012-08-02 13:53:29

回答

2

商店的用戶ID登錄時,然後把它並插入到你的查詢。

<?php 
//confirmed login, set $userid to the user's ID 
session_start(); 
$_SESSION['userid'] = $userid; 

然後將查詢應該是這樣的(修訂):

// Since, according to your comment, $username = $_COOKIE['username'] 

"UPDATE user_status SET last_activity_time = NOW() where user_id = (SELECT userid FROM users WHERE username='" . $_COOKIE['username'] . "')"; 

然而切勿使用mysql_*功能了。他們正在被棄用。請使用PDOmysqli。如果您不確定使用哪一個,read this article from SO

+0

這很好,但實際上我從會話中獲得了用戶名,我必須在表user中的'user_id'和'user_status'表之間建立連接.... – Abude 2012-08-02 14:17:06

+0

就像這樣:'$ username = $ _COOKIE ['username'];'我該怎麼做?你能更新答案嗎?謝謝 ! – Abude 2012-08-02 14:23:24

+0

已更新。我的查詢可能不完美優化,但它會起作用。 – Matt 2012-08-02 14:27:06

2

the introduction表示對mysql_*功能PHP手冊章:

這種擴展是不建議編寫新的代碼。相反,應該使用mysqliPDO_MySQL擴展名。請參閱MySQL API Overview以獲取進一步幫助,同時選擇MySQL API。

使用PDO:

$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass); 
$qry = $dbh->prepare(' 
    UPDATE user_status SET last_activity_time = NOW() WHERE user_id = ? 
'); 
$qry->bindValue(1, $_SESSION['userid']); 
$qry->execute(); 
+0

我想把它從$ _session – Abude 2012-08-02 13:57:12

+0

@Jimmy這段代碼允許你從會話中獲取它。 eggyal正在使用PDO來完成你想要做的事情。 – Matt 2012-08-02 14:04:33

1

你想是這樣的:在用戶的$_SESSION

<?php 
    $date = date("Y-m-d H:i:s"); 

    if(isset($_SESSION['userid']) 
    // or whatever you are using to see if the user is active? 
    { 
     $query = mysql_query("update user_status SET userID=".$_SESSION['userID'], last_activity_time=".$date.";"); 
    } 

?> 
+0

-1使用'mysql_ *'。這已被棄用,不應再使用。建議使用[PDO](http://php.net/manual/en/book.pdo.php)或[mysqli](http://php.net/manual/en/book.mysqli.php)。 – Matt 2012-08-02 14:03:52

相關問題