2013-07-10 34 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