2016-04-02 173 views
0

我正在開發一個刺激輪詢通知功能的android應用程序。因此,我創建了一個服務,不斷向服務器詢問新數據。但是,我在我的數據庫中使用了一張名爲Seen的表格。此表用於服務器請求特定的user_id,如果該表中不存在news_id,它將生成通知。只從數據庫檢索新數據

問題是,當我第一次啓動應用程序。它從數據庫中檢索所有數據,因爲考慮用戶的服務器沒有看到新聞。

如果有人能幫助我?

我想通過這個想法解決它:當我第一次啓動應用程序。在所看到的表格中插入與該user_id相關的所有新聞以獲得0條新消息。但我認爲這將是效率不高。

這是我的數據庫和我的PHP腳本

用戶表

User_ID | User_Name 
-------------------- 
1  | John 
2  | Carl 
3  | Tomas 
4  | Adam 
5  | Nancy 

新聞表

News_ID | News_Text  | news_date   
--------------------------- 
1  | Hello World | CURRENTDATE() 
2  | This is My car | CURRENTDATE() 
3  | I had Ate pizza| CURRENTDATE() 
4  | Leave Me Alone | CURRENTDATE() 
5  | C++ Programming| CURRENTDATE() 

看錶

ID | User_Id | News_Id 
--------------------------- 
1 | 1  | 2 
2 | 1  | 3 
3 | 4  | 1 
4 | 5  | 3 
5 | 1  | 4 

這是我的PHP代碼,它也顯示出我的查詢來獲取未在表Seen_news顯示消息:

<?php 

require('config.php'); 
$conn = mysqli_connect($servername, $username, $password, $db); 
$query="SELECT * FROM news WHERE news_id NOT IN (SELECT news_id FROM news_seen WHERE user_id = '".$_GET['id']."')"; 

$result = mysqli_query($conn,$query); 
$rows = array(); 
echo mysqli_error($conn); 

while($row = mysqli_fetch_assoc($result)) { 
    $rows[] = $row; 
} 

echo json_encode($rows); 
?> 

假設我發送的USER_ID PHP腳本和基於在結果查詢將顯示json文件。

+0

你找到一個解決問題的方法了嗎? – gmfm

+0

是的,我解決了我的問題謝謝。 –

回答

1

如果您可以向用戶表中添加create_date列,則可以選擇看到news_date大於User create_date的位置。

喜歡的東西:

"SELECT * FROM news WHERE news_id NOT IN (SELECT news_id FROM news_seen WHERE user_id = '".$_GET['id']."') AND news_date > (SELECT create_date FROM user WHERE user_id = '".$_GET['id']."')"