2013-07-10 31 views
0

我正在開發一個教育項目,爲IOS應用程序創建一個簡化的消息傳遞系統。並且在排序我的消息列表時出現問題(不是實際的對話列表)PHP SQL - JSON - 消息列表

表:消息 - FIELDS = id,touser,來自用戶,日期,消息,照片,readmessage。 目前代碼:

<?php 
$enduser = $_GET['username']; 
$db = b2fdev; 
$con = mysql_connect("localhost","admin","admin"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db($db, $con); 
    $arr = array(); 
    //Execute the query 
     $rs = mysql_query("SELECT * FROM messages WHERE touser = '$enduser' GROUP BY fromuser"); 
     while($obj = mysql_fetch_object($rs)) { 
     $arr[] = $obj; 
     } 
     echo '{"users":'.json_encode($arr).'}'; 
mysql_close($con); 
?> 

今後結果顯示.....

{ 「用戶」:[{ 「ID」: 「359」, 「至用戶」: 「knitsu」, 「FROMUSER」 :「skye」,「date」:「2013-07-04 07:07:44」,「message」:「想念你」,「photo」:「」,「readmessage」:「NO」},{「id 「:」327「,」touser「:」knitsu「,」fromuser「:」tota「,」date「:」2013-04-08 05:49:46「,」短信「:」不多冷不冷「, 「photo」:「」,「readmessage」:「NO」}]}

這很好,除了一件東西,它顯示的消息是表中的第一個,它不是最近的消息,我將如何分類顯示最近的信息 ?

感謝

回答

3

查詢更改爲以下:

SELECT * 
FROM messages a 
LEFT JOIN messages b 
    ON a.fromuser = b.fromuser 
    AND a.date < b.date 
WHERE b.date is null 
AND a.touser = '$enduser' 
ORDER BY LOWER(a.fromuser) 
+0

http://imageshack.us/photo/my-images/29/5ht.png/是表的鏈接 這不應該意味着如果用戶是knitsu,則顯示id#382和359? 只是爲了闡明消息列表,只顯示來自發送用戶登錄信息的用戶的最新消息? – Knitsu

+0

我不知道你在問什麼。發送給knitsu的消息ID是327,359,381和382.我知道如果knitsu是否登錄過。 –

+0

所以基本上當我運行該腳本時,發生了一些事情 它發現用戶登錄的消息,如「knitsu」它會查找該表中的所有消息,然後將它們從用戶進行分組,所以最終表只顯示一個來自每個用戶的消息,因此消息列表只顯示來自用戶的一條消息進行編織,但是它顯示的消息不是最近的消息 IE:來自tota的消息是最舊的消息,而不是最新的消息,並按日期排序,沒有做任何事情 對不起,如果這沒有意義 – Knitsu